Jan*_*usz 4 mocking kotlin mockk
我用ockk创建一个类的模拟。在此模拟上,我现在调用一个将lambda作为参数的方法。
此lambda用作回调,以将回调的状态更改传递给方法的调用方。
class ObjectToMock() {
fun methodToCall(someValue: String?, observer: (State) -> Unit) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
如何配置模拟以调用传递的Lambda?
s1m*_*nw1 12
您可以使用answers:
val otm: ObjectToMock = mockk()
every { otm.methodToCall(any(), any())} answers {
secondArg<(String) -> Unit>().invoke("anything")
}
otm.methodToCall("bla"){
println("invoked with $it") //invoked with anything
}
Run Code Online (Sandbox Code Playgroud)
在answers范围内,您可以访问firstArg,secondArg等等,甚至可以通过将其作为通用参数提供来获得期望的类型。请注意,我invoke以前使它更具可读性,您也可以将其作为带空括号的普通函数来调用。
也许不完全是你所问的,但你可以使用 funciton 类型进行模拟:
val observerMock = mockk<(State) -> Unit>()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1108 次 |
| 最近记录: |