我对 Kotlin 和 Kotest 还很陌生,一直在摸索如何正确地对 webflux 应用程序进行单元测试。在这里查看kotest 示例,对我来说,这看起来像是在启动WebTestClient
服务器,更像是集成测试(如果我错了,请纠正我)。
我的应用程序相当简单,我有一个休息控制器,我正在使用构造函数注入来注入我的服务。
此服务用于WebClient
调用不同的外部服务,该服务返回一个Mono<MyResponse>
. 我的测试看起来像这样:
@SpringBootTest
class MyControllerTest : FunSpec({
lateinit var service: MyService
lateinit var controller: MyController
beforeTest {
service = mockk()
controller = MyController(service)
}
test("should return my response") {
val myResponse = MyResponse(name = "John Doe")
every { service.getName(any()) } returns Mono.just(myResponse)
val response = controller.getName()
verify { service.getName(any()) }
response shouldBe myResponse
}
})
我得到的错误是:
expected: MyResponse(name = "John Doe")
actual: Monojust