0

我对 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
4

0 回答 0