android - MockK - 左匹配器的匹配模拟签名失败 : [any(), any()]

标签 android kotlin android-testing mockk

我想实现一些 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 会抛出这个错误?这是怎么回事?有什么解决办法吗?

最佳答案

试试 mockkStatic(WakeUpTimerManager::class) .对我来说 mockkObject也没有工作,但是 mockkStatic做过

关于android - MockK - 左匹配器的匹配模拟签名失败 : [any(), any()],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66455570/

相关文章:

android - android 上可靠的重复后台任务

java - 在安卓上使用服务加载器

android - 数据狗朗姆酒 : Is it possible to include HTTP request body in resource logging?

spring - Kotlin 和 Spring Boot @ConfigurationProperties

Android Studio InstrumentationTestCase 配置和日志输出

java - 创建 onClickListener 时出现 NullPointerException

java - Kotlin 字符串最大长度? (带有长字符串的 Kotlin 文件无法编译)

string - Kotlin - 是否有一个基本函数可以用引用字符串中的多个字符串替换多个字符串?

android - Espresso - 如何获取当前 Activity 来测试 Fragments?

android - 在 Android 中测试通知