PS: код будет в Koltin
Например, у меня есть класс обслуживания, который что-то делает и внедряет какой-то другой сервис.
class MyService(
private val someOtherService: OtherService
) {
fun doSomething() {
someOtherService.someMethod("foo")
someOtherService.someMethod("bar")
someOtherService.someMethod("baz")
}
}
Вот мой тест для моего класса MyServicewhich насмехается над OtherService:
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")
.
Однако я хочу убедиться, что каждый метод вызывается ровно один раз. Как я могу это сделать?