4

PS: コードは Koltin になります

たとえば、何かを実行して他のサービスを注入するサービス クラスがあります。

class MyService(
   private val someOtherService: OtherService
) {
   fun doSomething() {
       someOtherService.someMethod("foo")
       someOtherService.someMethod("bar")
       someOtherService.someMethod("baz")
   }
}

これは、OtherService をモックする MyService クラスに対する私のテストです。

internal class MyServiceTest {
    @MockkBean(relaxed = true)
    private lateinit var someOtherService: OtherService

    @Test
    fun `my test description`() {
        every { someOtherService.someMethod(any()) } just Runs

        verify(exactly = 1) {
            someOtherService.someMethod(
                    match {
                        it shouldBe "bar"
                        true
                    }
            )
        }
    }

その結果、"bar"パラメーターが期待されますが、"foo"代わりにパラメーターになり、テストは失敗します。

理由:のsomeOtherService.someMethod("foo")前に呼び出されsomeOtherService.someMethod("bar")ます。

ただし、すべてのメソッドが 1 回だけ呼び出されたことを確認したいと思います。どうすればそれができますか?

4

1 に答える 1