pqu*_*est 5 c# unit-testing moq mocking
我有一个界面IMyInterface,我在使用moq进行单元测试时嘲笑.
Mock<IMyInterface> firstMockedObject = new Mock<IMyInterface>();
Mock<IMyInterface> secondMockedObject = new Mock<IMyInterface>();
Run Code Online (Sandbox Code Playgroud)
被测单元有一个寄存器方法,如下所示:
public void RegisterHandler(Type type, IHandler handler)
然后是一个句柄方法:
public void Handle(IMyInterface objectToHandle)
我试图测试的是,我可以为2种不同的实现设置2个处理程序,IMyInterface并且Handle方法正确地选择使用哪个:
UnitUnderTest.RegisterHAndler(firstMockedObject.Object.GetType(), handler1);
UnitUnderTest.RegisterHAndler(seconMockedObject.Object.GetType(), handler2);
Run Code Online (Sandbox Code Playgroud)
问题是两个模拟对象都属于同一类型.有没有办法迫使Moq生成与不同类型相同接口的2个模拟?
创建从您的界面派生的两个接口.将它们用于模拟.每个类型都是模拟的接口类型:
public interface IMockOne : IMyInterface { };
public interface IMockTwo : IMyInterface { };
var firstMockedObject = new Mock<IMockOne>();
var secondMockedObject = new Mock<IMockTwo>();
Run Code Online (Sandbox Code Playgroud)
这允许您不要实现用于模拟的整个类,而是moq用于创建动态模拟.
| 归档时间: |
|
| 查看次数: |
788 次 |
| 最近记录: |