Open22
Kotlin で モックテスト
Android でやる
使うのはこれ
導入
(app)
dependencies {
testImplementation 'io.mockk:mockk:1.11.0'
}
これ書く
sync gradle する
テストに行って、
mockk
って書いて呼び出そうとしてもインポートも何もしてくれなくてあたふた
実践例がいい感じで参考
自分で
import io.mockk.*
書いたら読んでくれたので、このまま書いていく
だめやんけえ
Unresolved reference: io
Unresolved reference: io
Unresolved reference: mockk
Unresolved reference: every
androidTestImplementation "io.mockk:mockk-android:{version}"
これ書き足したら通った
テストはなんか mock 部分がぬるぽでおちた
にてる?
コンストラクタが引数ありの場合は
val client = spyk<(context: Context) -> Client>()
こんな感じで書けるかも
これやったけどダメッっぽい
import androidx.test.ext.junit.runners.AndroidJUnit4
import io.mockk.confirmVerified
import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class MockkTest {
@Test
fun mock_test() {
val base = mockk<Base>()
every { base.getHoge() } returns "mocked"
val result = base.getHoge()
Assert.assertEquals("mocked", result)
verify {
base.getHoge()
}
confirmVerified(base)
}
class Base {
fun getHoge(): String {
return "moge"
}
}
}
io.mockk.MockKException: Missing mocked calls inside every { ... } block: make sure the object inside the block is a mock
at io.mockk.impl.recording.states.StubbingState.checkMissingCalls(StubbingState.kt:14)
at io.mockk.impl.recording.states.StubbingState.recordingDone(StubbingState.kt:8)
at io.mockk.impl.recording.CommonCallRecorder.done(CommonCallRecorder.kt:47)
at io.mockk.impl.eval.RecordedBlockEvaluator.record(RecordedBlockEvaluator.kt:64)
at io.mockk.impl.eval.EveryBlockEvaluator.every(EveryBlockEvaluator.kt:30)
at io.mockk.MockKDsl.internalEvery(API.kt:92)
at io.mockk.MockKKt.every(MockK.kt:98)
何もわからん
mockio 使ってみる?
Unresolved reference: mockito
Unresolved reference: mockito
Unresolved reference: mock
Unresolved reference: on
Unresolved reference: getHoge
mockio でも出た…
AndroidStudio 調子悪い?
わからんまつり
mockk でいじってたら java.util.Collections$SingletonList cannot be cast to
みたいなエラーに変わった
あきらめ
mockito に関しては読み込みすらできない
class MockkTest {
@Test
fun mock_test() {
val base = spyk(Base())
every { base.getHoge() } returns "mocked"
val result = base.getHoge()
Assert.assertEquals("mocked", result)
verify {
base.getHoge()
}
confirmVerified(base)
}
open class Base {
fun getHoge(): String {
return "moge"
}
}
}
io.mockk.MockKException: Missing mocked calls inside every { ... } block: make sure the object inside the block is a mock
at io.mockk.impl.recording.states.StubbingState.checkMissingCalls(StubbingState.kt:14)
at io.mockk.impl.recording.states.StubbingState.recordingDone(StubbingState.kt:8)
at io.mockk.impl.recording.CommonCallRecorder.done(CommonCallRecorder.kt:47)
at io.mockk.impl.eval.RecordedBlockEvaluator.record(RecordedBlockEvaluator.kt:60)
at io.mockk.impl.eval.EveryBlockEvaluator.every(EveryBlockEvaluator.kt:30)
at io.mockk.MockKDsl.internalEvery(API.kt:92)
at io.mockk.MockKKt.every(MockK.kt:98)