问题标签 [mockk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - MockK“io.mockk.MockKException:找不到答案:”错误
嗨,我正在尝试使用我的演示者类调用的委托器来模拟从单一可观察对象中获得的响应,该可观察对象从改造中返回,并且我收到以下错误:
io.mockk.MockKException:找不到答案:LoginPresenter(#1).login(LoginRequest(email=hello@gmail.com, password=password123))
这是我的测试代码
我实际的 Presenter 代码如下所示:
我基本上想模拟您从主代码中看到的注入依赖项,然后运行快乐路径单元测试。
当我调用 presenter.login(loginRequest) 并没有找到答案错误时,它失败了
这是我正在使用的 kotlin 扩展插件http://mockk.io/
mockk - MockK - 为每个测试重新初始化模拟
我使用以下方法创建了一些模拟:
val someService = mockk<SomeService>(relaxed = true)
文件中有多个测试,我希望为每个测试重置模拟
目前有没有办法在 MockK 中做到这一点?
我知道有 MockKAnnotations.init(this),但看起来没有办法在 @Mock 注释中设置 Relaxed = true
mockk - MockK - 验证失败,参数不匹配
我注意到有时会verify
因“......调用......发生,但参数不匹配”而失败
这是一个显示验证失败的示例测试:
如果我将带有验证调用的行更改为以下 2 行,那么它可以工作:
java - 使用 Mockk 模拟静态 java 方法
我们目前正在使用带有 kotlin 项目的 java,慢慢将整个代码迁移到后者。
是否可以像Uri.parse()
使用 Mockk 一样模拟静态方法?
示例代码会是什么样子?
android - 如何使用 Mockito 或 MockK 模拟 android.util.Patterns
我有一个需要测试的方法:
但它返回一个NullPointerException
错误,因为Patterns.email
需要被嘲笑。现在我手动创建和测试 Pattern 但无法测试上面的方法。
知道如何使用Mockito或MockK执行此操作,因此我可以整体测试此方法,而不是在测试中手动创建模式。
mockk - 使用 Mockk 编写 Kotlin 测试时,需要哪些依赖项才能导入 `io.mockk.every`?
我正在尝试基于testCompile group: 'io.mockk', name: 'mockk', version: '1.7.15'
以下代码编写测试:
虽然Runs
和已成功导入,但和MockK
不可用。是否正确的导入语句以及使用它们需要哪些其他依赖项?MockKExtension
every
any()
io.mockk.any
kotlin - 应该如何导入 Kotlin 类上的内联函数
项目依赖 jar(例如,称为KotlinClass
)中有一个带有内联函数的 kotlin 文件
如果我将它作为静态导入到 Java 类中:
导入被识别。
如果我将它导入 Kotlin 类:
或(无论如何这都不应该起作用,但为了完整性而尝试)作为
它不被认可。
(注意:如果我使用内联函数创建自己的 Kotlin 文件,则可以毫无问题地将其导入 Kotlin 类。问题是从特定项目依赖项导入时。)
什么可能会阻止将此函数导入 kotlin 类?
kotlin - 是否可以保留已经存在的接口实现?
我有一个这样的界面:
我想使用 mockk 创建 的实例Database
,但我只想模拟抽象方法,同时保留runTransaction
它确实具有我想要测试的实现。结果是我可以像这样验证:
是否有可能用 mockk 实现这一目标?
unit-testing - 我可以在 Kotlin 中使用 MockK 模拟通用(模板)私有方法吗?
我想模拟以下功能:
private fun <T> updateItemInDb(id: Long, column: String, data: T)
我的班级以以下方式调用它:
updateItemInDb(it, DB_POS, i)
, 哪里it
是Long
,DB_POS
是String
并且i
是Int
.
我希望该功能无需执行任何操作即可运行。我在单元测试中尝试了以下内容:
1)every { adapter["updateItemInDb"](any<Long>(), any<String>(), any<Int>()) } just Runs
这给了我一个类型不匹配的错误:required MockKStubScope<Unit>, found MockKStubScope<Any?>
2)every { adapter["updateItemInDb"](any<Long>(), any<String>(), any<Int>()) } answers { }
这在运行时失败io.mockk.MockKException: can't find function updateItemInDb(-1078155520644112829, -d008fa83c4f49c0, 843241211) for dynamic call
kotlin - 如何在界面中模拟 Kotlin 扩展功能?
我有一个接口的扩展功能,如下所示:
如何模拟函数 foo?
请注意,我在http://mockk.io/#extension-functions中看到了类和对象的方法,但它不起作用。我试过这个:
它抛出异常: