MockKでテストを書いていく上で、モックが呼ばれないことをテストしたかったのでメモ。
(Mockitoで言うところの verifyZeroInteractions
です。)
wasNot called
を使えばOK
テストしたいモックが mockObject
だとすると、下記のように書けばOKです。
verify {
mockObject wasNot called
}
英文ぽくなって、かなりいいですね
以下、サンプルコードを記載します。
サンプルコード
Hoge
というクラスがあり、 fuga()
では Logger
が呼ばれ、piyo()
では Logger
呼ばれないようになっています。
interface Logger {
fun log()
}
class Hoge(private val logger: Logger) {
fun fuga() {
logger.log()
}
fun piyo() {
// NO LOG
}
}
これをテストする場合は…、
class HogeTest {
@Test
fun fuga_Loggerが呼ばれる() {
val logger = mockk<Logger>(relaxed = true)
val hoge = Hoge(logger)
hoge.fuga()
verify {
logger.log() // log()が呼ばれることを検証
}
}
@Test
fun piyo_Loggerが呼ばれない() {
val logger = mockk<Logger>(relaxed = true)
val hoge = Hoge(logger)
hoge.piyo()
verify {
logger wasNot called // loggerが呼ばれないことを検証
}
}
}
という感じになります。