MockK - 左マッチャーのモック署名のマッチングに失敗しました: [any(), any()] 質問する

MockK - 左マッチャーのモック署名のマッチングに失敗しました: [any(), any()] 質問する

今日実装したコードが明日も機能することを保証するために UI テストをいくつか実装したいのですが、過去に実装した UI テストが機能するかどうかを確認しようとすると、次のエラーがスローされます。

Caused by: io.mockk.MockKException: Failed matching mocking signature for left matchers: [any(), any()]

これはevery {} return UnitWakeUpTimeManager というオブジェクトファイル、 それ.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たが、

おすすめ記事