【发布时间】:2011-03-31 01:24:35
【问题描述】:
我想要做的是为 I1 构建一个最小起订量 - 这很好......但是在我正在测试使用这个模拟的方法的过程中,我需要将它转换为 I2 以便访问一些属性不在 I1 上
Interface I1
{ int AProperty{get;set;}}
Interface I2
{int AnotherProperty{get;set;}}
然后我有一些对象
Class O1 : I1 {}
和
Class O2 : O1 , I2 {}
问题是,当我有一个 I2 实现对象的实例时,我可以将它强制转换为 I1,以便访问通过该接口实现的方法。在代码中这不是问题,一切都按预期工作。
唯一的问题是在该类上编写单元测试。
这些接口还公开了一个名为 GetNewInstance 的方法,该方法返回一个已初始化的实现对象的实例,该实例强制转换为 IGetNewInstance 接口......我通常可以很好地模拟它并使其返回自身(因此我继续使用模拟对象)。
但是,当您尝试将此返回的 I2 类型的对象转换为 I1 时,会产生空引用结果 - 这是有道理的,因为实现 I2 的模拟对象不会从任何继承 I1 的对象继承。
问题是如何强制模拟对象同时从 I1 和 I2 继承?
【问题讨论】:
标签: unit-testing inheritance interface moq