最小起订量-如何创建可同时实现多个接口的模拟

时间:2019-03-05 10:22:47

标签: c# moq

我有一个方法,它期望一个对象实现两个接口:

public class MyClass {
    public void Do<T>(T myObj) where T : IInterfaceA, IInterfaceB { ... }
}

我正在使用Moq 4.10.1尝试创建此对象的模拟。 documentation显示了如何使用多个接口:

// implementing multiple interfaces in mock
var mock = new Mock<IFoo>();
var disposableFoo = mock.As<IDisposable>();
// now the IFoo mock also implements IDisposable :)
disposableFoo.Setup(disposable => disposable.Dispose());

// implementing multiple interfaces in single mock
var mock = new Mock<IFoo>();
mock.Setup(foo => foo.Name).Returns("Fred");
mock.As<IDisposable>().Setup(disposable => disposable.Dispose());

但是,在这些示例之后,我只能得到一次只能实现一个接口的模拟,而不能同时实现两个:

var mockA = new Mock<IInterfaceA>();
var mockB = mockA.As<IInterfaceB>();
instance.Do(mockB.Object); // Error: mock only implements IInterfaceB, but not IInterfaceA

是否可以创建同时实现两个接口的模拟?

编辑:我不想创建第三个界面,仅将其他界面组合在一起以进行测试。

谢谢

0 个答案:

没有答案