运行测试时不考虑 Micronaut 测试包

问题描述

我的代码设置如下:

SomeService

我正在为 @MicronautTest(startApplication=false) internal class SomeServiceTest { @Inject private lateinit var someRepository: SomeRepository @MockBean(SomeRepository::class.java) @Primary fun someRepository = mock(SomeRepository::class.java) @Inject private lateinit var someService: SomeService @Test fun `some test`() { ... } } 编写单元测试,如下所示:

@MockBean(MongoClient::class.java)
@Primary
fun mongoClient = mock(MongoClient::class.java)

我认为由于我已经模拟了存储库实例,它不会实例化 Mongo DB 的调用,但是当测试开始时它会实例化与 mongo 的连接,我无法理解为什么会发生这种情况。为什么要实例化与 MongoDB 的连接?

我尝试通过以下方式嘲笑 Mongo 客户端:

@MicronautTest(startApplication=false,packages=["foo.bar.service","foo.bar.repository"])

它可以工作,这次没有连接到 Mongo DB,所以出于某种原因,所以在第一种情况下,它正在实例化 Monog Client 的实例,即使我已经模拟了 SomeRepository。

谁能告诉我,为什么会发生这种情况,我怎样才能达到我想要的结果?

编辑: 我累了 Micronaut 测试中的包,将被扫描的包范围限制在我的包内,像这样

{{1}}

但即使这样也无济于事,出于某种原因,实例化了与 Mongo DB 的连接,这意味着出于某种原因创建了 Mongo 客户端。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)