今日実装したコードが明日も機能することを保証するために UI テストをいくつか実装したいのですが、過去に実装した UI テストが機能するかどうかを確認しようとすると、次のエラーがスローされます。
Caused by: io.mockk.MockKException: Failed matching mocking signature for left matchers: [any(), any()]
これはevery {} return Unit
、WakeUpTimeManager というオブジェクトファイル、 それ.set(param1, param2) を呼び出す機能とその関数の中にはいくつかのインライン関数がありますこれが問題の原因かもしれないと思うのですが、わかりません。インターネットで検索してみましたが、解決策は見つかりませんでした。
エラーが発生するテストは次のとおりです。
@Before
fun setup() {
mockkObject(WakeUpTimerManager)
every { WakeUpTimerManager.set(any(), any()) } returns Unit
}
every
オンラインで呼び出される関数は次のとおりです
fun set(context: Context, timer: Timer) {
if (timer.atMillis < System.currentTimeMillis()) {
return
}
if (Preset.findByID(context, timer.presetID) == null) {
return
}
//This is an inline function
withGson {
PreferenceManager.getDefaultSharedPreferences(context).edit {
putString(PREF_WAKE_UP_TIMER, it.toJson(timer))
}
}
//This is an inline function
withAlarmManager(context) {
it.setAlarmClock(
AlarmManager.AlarmClockInfo(timer.atMillis, getPendingIntentForActivity(context)),
getPendingIntentForService(context, timer)
)
}
}
質問:mockk がこのエラーをスローするのはなぜですか? 何が起こっているのですか? これに対する解決策はありますか?
ベストアンサー1
試してみてくださいmockkStatic(WakeUpTimerManager::class)
。私の場合はmockkObject
うまくいきませんでしmockkStatic
たが、