如何为继承多个接口的对象创建模拟接口
本文关键字:接口 对象 创建 模拟 继承 | 更新日期: 2023-09-27 18:26:33
我是生成C
类对象的库的客户,该库实现了两个接口IA
和IB
,这表示我需要存储的永久连接。
我需要存储调用之间返回的对象C
。
class Example
{
C _obj;
}
我想模拟C
用于测试的接口函数,但因为"C"继承了多个接口,所以我没有接口IC
,所以我不能写:
class Example
{
Example(IC cInstance) { _obj = cInstance; }
IC _obj;
}
因此,我无法轻松创建一个同时实现接口IA
和IB
的mock对象,我可以用它来测试我的类Example
的工作情况。
如何在不使用铸造或丑陋的东西的情况下做到这一点?
您可以使用泛型:
class Example<T> where T : IA, IB
{
public Example(T instance)
{
this.obj = instance;
}
private T obj;
}
您可以将C
或您的模型与Example
一起使用,只要该类实现两个接口:
class CMock : IA, IB
{
// ...
}
var myMockObj = new CMock();
var example = new Example<CMock>(myMockObj);
如果对象继承了两个接口,可能应该存储两个引用:
class Example
{
Example(IA aInstance, IB bInstance) { _a = aInstance; _b = bInstance; }
IA _a;
IB _b;
}
这并不难看。相反地