我有一个方法,它期望一个对象实现两个接口:
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
是否可以创建同时实现两个接口的模拟?
编辑:我不想创建第三个界面,仅将其他界面组合在一起以进行测试。
谢谢