Mockk:同时模拟多个接口

时间:2020-06-16 16:10:52

标签: kotlin mockk

我正在尝试使用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指定其他接口,但是我不想在这里使用实际的实现。

有没有办法做到这一点?还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

可以使用moreInterfaces参数。

带有spyk的文档中的示例。也应与mockk一起使用:

val spy = spyk(System.out, moreInterfaces = *arrayOf(Runnable::class))