将相同的界面模拟为 2 种不同的类型
Mock same interface as 2 different types
我有一个接口 IMyInterface
,我正在使用最小起订量进行单元测试。
Mock<IMyInterface> firstMockedObject = new Mock<IMyInterface>();
Mock<IMyInterface> secondMockedObject = new Mock<IMyInterface>();
被测单元有一个注册方法,如下所示:
public void RegisterHandler(Type type, IHandler handler)
然后是句柄方法:
public void Handle(IMyInterface objectToHandle)
我要测试的是,我可以为 IMyInterface
的 2 种不同实现注册 2 个处理程序,并且 Handle 方法正确选择要使用的处理程序:
UnitUnderTest.RegisterHAndler(firstMockedObject.Object.GetType(), handler1);
UnitUnderTest.RegisterHAndler(seconMockedObject.Object.GetType(), handler2);
问题是两个模拟对象的类型相同。有什么方法可以强制 Moq 生成 2 个相同接口的模拟作为不同类型?
您可以为此测试创建自己的模拟实现。
喜欢
public class MockOne : IMyInterface {}
public class MockTwo : IMyInterface {}
创建两个从您的界面派生的界面。将它们用于模拟。每个的类型将是模拟接口类型:
public interface IMockOne : IMyInterface { };
public interface IMockTwo : IMyInterface { };
var firstMockedObject = new Mock<IMockOne>();
var secondMockedObject = new Mock<IMockTwo>();
这使您不必为模拟实现整个 class,而是使用 moq
创建动态模拟。
我有一个接口 IMyInterface
,我正在使用最小起订量进行单元测试。
Mock<IMyInterface> firstMockedObject = new Mock<IMyInterface>();
Mock<IMyInterface> secondMockedObject = new Mock<IMyInterface>();
被测单元有一个注册方法,如下所示:
public void RegisterHandler(Type type, IHandler handler)
然后是句柄方法:
public void Handle(IMyInterface objectToHandle)
我要测试的是,我可以为 IMyInterface
的 2 种不同实现注册 2 个处理程序,并且 Handle 方法正确选择要使用的处理程序:
UnitUnderTest.RegisterHAndler(firstMockedObject.Object.GetType(), handler1);
UnitUnderTest.RegisterHAndler(seconMockedObject.Object.GetType(), handler2);
问题是两个模拟对象的类型相同。有什么方法可以强制 Moq 生成 2 个相同接口的模拟作为不同类型?
您可以为此测试创建自己的模拟实现。 喜欢
public class MockOne : IMyInterface {}
public class MockTwo : IMyInterface {}
创建两个从您的界面派生的界面。将它们用于模拟。每个的类型将是模拟接口类型:
public interface IMockOne : IMyInterface { };
public interface IMockTwo : IMyInterface { };
var firstMockedObject = new Mock<IMockOne>();
var secondMockedObject = new Mock<IMockTwo>();
这使您不必为模拟实现整个 class,而是使用 moq
创建动态模拟。