Я пытаюсь проверить, что функция не вызывалась, используя следующее:
verify {
managementService.deleteUser(any()) wasNot Called
}
Эта проверка завершается с ошибкой с сообщением:
Проверка не удалась: вызов 1 из 1: ManagementService(#11).deleteUser(any())) не вызывался.
Если я инвертирую проверку на это:
verify {
managementService.deleteUser(any())
}
Я все еще получаю то же сообщение об ошибке.
Есть и другие функции на ManagementService
, которые проходят wasNot Called
просто отлично.
Почему моя проверка не прошла для wasNot Called
, в то время как в сообщении об ошибке говорится, что ошибка связана с тем, что она не была вызвана? И почему инвертирование чека приведет к той же ошибке?
wasNot Called
используется не для проверки того, что конкретный вызов функции не был выполнен, а для того, чтобы не вызывался весь макет, например:
verify {
managementService wasNot Called
}
Если вы хотите убедиться, что deleteUser
не был вызван ни с каким аргументом, вы можете убедиться, что вызов произошел ровно ноль раз:
verify(exactly = 0) {
managementService.deleteUser(any())
}
Это решает это. Теперь я вижу это и в документах (notwoods.github.io/mockk-guidebook/docs/mocking/verify/…). Раньше это не бросалось мне в глаза, потому что я новичок в Kotlin и Mockk и подражал другим существующим тестам. Я все еще немного озадачен, потому что существующие тесты пройдены. Например, verify { managementService.createUser(any()) }
прошел верификацию. Первоначально я включил свою первоначальную проверку в тот же блок, но переместил ее в отдельный блок проверки для устранения неполадок. В обоих случаях createUser(any())
проходит, а deleteUser(any())
терпит неудачу.
Отвечает ли это на ваш вопрос? Как проверить, не вызывался ли метод с помощью mockk?