Closed1
Mockitoで直接依存していないクラスの振る舞いを変更したい
まとめ
- Mockを返すようにMockの振る舞いを定義してあげれば良い
課題感
Mockを使ったテストをしたいけど、テスト対象のクラスが直接依存しているわけではないのでMockできない、どうすれば?
以下のようなイメージ
class Target(
private val hoge: Hoge
) {
fun targetFun() {
val fuga = hoge.getFuga()
fuga.action() // これをMockしたい
}
}
class Hoge {
fun getFuga(): Fuga {}
}
class Fuga {}
解決策
直接依存しているHoge
に対してmock<Fuga>
を返すようにMockしてあげれば良い
class TargetTest {
lateinit val target: Target
@Mock
val hoge: Hoge
@Test
fun targetTest() {
val fuga = mock<Fuga>
whenever(hoge.getFuga()).thenReturn(fuga)
whenever(fuga.action()).then~
val target = Target(hoge)
target.targetFun()
}
}
このスクラップは2023/08/30にクローズされました