c# - 如何为继承多个接口(interface)的对象创建模拟接口(interface)

标签 c# mocking tdd

我是生成类 C 对象的库的客户,它实现了两个接口(interface) IAIB,代表永久连接我需要存储。

我需要存储调用之间返回的对象 C

class Example
{
    C   _obj;
}

我想模拟C使用的接口(interface)函数进行测试,但是因为'C'继承了多个接口(interface)我没有接口(interface)IC,所以我不能写:

class Example
{
    Example(IC cInstance) { _obj = cInstance; }
    IC  _obj;
}

因此我无法轻松创建一个模拟对象来实现接口(interface) IAIB 我可以用来测试我的类 Example有效。

如何在不使用转换或其他丑陋的东西的情况下做到这一点?

最佳答案

你可以使用泛型来做到这一点:

class Example<T> where T : IA, IB
{
    public Example(T instance)
    {
        this.obj = instance;
    }
    private T obj;
}

您可以使用 C 或带有 Example 的模型,只要该类实现了这两个接口(interface):

class CMock : IA, IB
{
    // ...
}

var myMockObj = new CMock();
var example = new Example<CMock>(myMockObj);

关于c# - 如何为继承多个接口(interface)的对象创建模拟接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383980/

相关文章:

tdd - TDD研究

node.js - node.js 的 BDD 和 TDD?

javascript - 文本框在 javascript 中接受 1900 - 2050 的日期

c# - 是否可以在不使用连接器的情况下将 C# 变量包含在字符串变量中?

java - 测试私有(private)静态方法

java - Camel 单元测试设置了对模拟组件的期望

c# - 在 System.Windows.UIElement 中包装来自 System.Windows.Forms 的控件

c# - 使用 C# 更新 mongodb 中的嵌入式文档

c# - 模拟 COM 对象

asp.net-mvc - ASP.NET MVC - 单元测试过度? (时分驱动)