微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决运行测试时不考虑 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 举报,一经查实,本站将立刻删除。