计算器类实现了多个接口。
public class Calculator : IAdd, ISubtract, IMultiply, IDivide
{
...
}
我将如何使用最小起订量模拟这个类,并将 IS 传递给 MyMethod?
public int MyMethod(Calculator calculator)
{
...
}
例如,我嘲笑我,并试图将其转换为计算器,但它变为空。
要直接回答最初的问题,可以按原样嘲笑Calculator
类
Mock<Calculator> mock = new Mock<Calculator>();
最小起订量允许提取特定的派生类型,以便使用As<T>()
进行设置
Mock<IMultiply> multiplyMock = mock.As<IMultiply>();
multiplyMock.Setup(...);
var subject = new MyClass();
subject.MyMethod(mock.Object);
设计明智Calculator
我建议从它自己的界面开始。
创建单个接口以聚合功能
public interface ICalculator: IAdd, ISubtract, IMultiply, IDivide {
}
并Calculator
从中得出
public class Calculator : ICalculator {
//...
}
方法取决于抽象
public int MyMethod(ICalculator calculator) {
//...
}
在测试时,可以根据需要轻松模拟界面。
//Arrange
var calculator = Mock.Of<ICalculator>(); //and configure expected behavior
var subject = new MyClass();
//Act
var result = subject.MyMethod(calculator);