android - MockK - 左匹配器的匹配模拟签名失败:[any(), any()]
问题描述
我想实现一些 UI 测试以确保今天实现的代码明天可以使用,但是当尝试查看过去实现的 UI 测试是否有效时,它会抛出此错误:
Caused by: io.mockk.MockKException: Failed matching mocking signature for left matchers: [any(), any()]
这发生在有一个名为 WakeUpTimeManager 的对象文件every {} return Unit
的行上,该文件调用一个 .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
确实
推荐阅读
- reactjs - Uncaught TypeError: map is not a function In Reactjs with Firebase
- c++ - 为什么自动将此变量推断为双精度而不是浮点数?
- javascript - jQuery首先触发一个keydown事件
- python - CSV 文件在由 spark DataFrameWriter 创建时保持打开状态
- scala - 如何将案例类传递给函数参数并相应地获取模式?
- flutter - Flutter,DateTime.now() 在我的代码中不起作用
- java - 我们可以在 Firestore 中查询多深?
- javascript - 有没有办法在多个 selected.js 选择框中预加载选定的选项?
- lazy-loading - Jquery 向所有图像添加 loading=lazy
- c - 内核如何处理对共享映射的并发访问?