kotlin - Mockk : 同时模拟多个接口
问题描述
我正在尝试使用 Mockk 模拟一些接口。
在某些时候,我必须创建一个实现 2 个接口的模拟。
例如,在 C# 中使用 Moq,我可以这样做:
// implementing multiple interfaces in mock
var foo = new Mock<IFoo>();
var disposableFoo = foo.As<IDisposable>();
// now IFoo mock also implements IDisposable :)
disposableFoo.Setup(df => df.Dispose());
有没有办法用 Mockk 做到这一点?
如果我尝试类似
val foo : IFoo = mockk()
every { (foo as AutoCloseable).close() } just Runs
我收到以下错误(这是有道理的):
com.example.IFoo$Subclass0 cannot be cast to java.lang.AutoCloseable
我在文档中看到我可以使用 指定其他接口spyk
,但我不想在这里使用实际的实现。
有没有办法做到这一点 ?还有另一种方法吗?
解决方案
有moreInterfaces
参数是可能的。
来自文档的示例spyk
。也应该使用mockk
:
val spy = spyk(System.out, moreInterfaces = *arrayOf(Runnable::class))
推荐阅读
- sql - 当前时间-1小时
- ios - 在不设置显式高度的情况下自动调整 UILabel 的大小
- sql-server - 根据 T-SQL 存储过程的结果,通过 SQL Server 代理发送电子邮件
- sql - 选择存储在字符串中的邮政编码作为数字范围(蜂巢)
- bash - 使用 ffmpeg 将 mkv 转换为 mp4 有时会丢失视频
- javascript - Vue.JS / JEST - 无法模拟资产参考
- java - Java Scanner 输入和 while 循环出现问题,其中包含多个 if 语句
- button - Swiftui 侧边菜单按钮操作
- node.js - react native 不会在模拟器上本地获取
- amazon-web-services - 模板错误:函数实例引用未定义的资源