gpt4 book ai didi

c# - 将相同的界面模拟为 2 种不同的类型

转载 作者:太空狗 更新时间:2023-10-29 22:36:33 25 4
gpt4 key购买 nike

我有一个接口(interface) IMyInterface,我正在使用 moq 在单元测试中模拟它。

Mock<IMyInterface> firstMockedObject = new Mock<IMyInterface>();
Mock<IMyInterface> secondMockedObject = new Mock<IMyInterface>();

被测单元有一个注册方法,如下所示:

public void RegisterHandler(Type 类型, IHandler 处理程序)

然后是句柄方法:

public void Handle(IMyInterface objectToHandle)

我要测试的是,我可以为 IMyInterface 的 2 个不同实现注册 2 个处理程序,并且 Handle 方法正确选择要使用的一个:

UnitUnderTest.RegisterHAndler(firstMockedObject.Object.GetType(), handler1);
UnitUnderTest.RegisterHAndler(seconMockedObject.Object.GetType(), handler2);

问题是两个模拟对象属于同一类型。有什么方法可以强制 Moq 生成 2 个相同接口(interface)的模拟作为不同类型?

最佳答案

创建两个从您的界面派生的界面。将它们用于模拟。每一个的类型都是模拟接口(interface)类型:

public interface IMockOne : IMyInterface { };
public interface IMockTwo : IMyInterface { };


var firstMockedObject = new Mock<IMockOne>();
var secondMockedObject = new Mock<IMockTwo>();

这使您无需为模拟实现整个类,而是使用 moq 创建动态模拟。

关于c# - 将相同的界面模拟为 2 种不同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33898243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com