Mockk : 同时模拟多个接口
Mockk : Mock more than one interface at the same time
我正在尝试使用 Mockk 模拟一些接口。
有时,我必须创建一个实现 2 个接口的模拟。
例如,在 C# 中使用 Moq,我可以做到 that :
// 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))
我正在尝试使用 Mockk 模拟一些接口。
有时,我必须创建一个实现 2 个接口的模拟。
例如,在 C# 中使用 Moq,我可以做到 that :
// 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))