【发布时间】:2016-05-10 21:18:28
【问题描述】:
我有一个依赖于通过通用方法执行查询的外部组件的类型。以下是其中的简化版本:
public class UnitUnderTest
{
private IQueryEngine _engine;
public UnitUnderTest(IQueryEngine engine)
{
_engine = engine;
}
public OutputType DoSomething()
{
_engine.Query<ExternalType>(...);
_engine.Query<InternalType>(...);
}
}
public interface IQueryEngine
{
IEnumerable<T> Query<T>(string conditions);
}
DoSomething 方法我尝试测试两次调用 IQueryEngine。
它第一次使用我可以从我的测试中访问的类型调用它,所以我使用A.CallTo 来模拟它没有问题。
然后它第二次调用我无法访问的类型参数(它是internal 类型)。
现在我的测试失败了,因为 DoSomething 不希望从对 _engine.Query 的调用中返回 null,但我无法构造要返回的正确类型的对象。
如何模拟这个调用?
【问题讨论】:
-
为什么不添加
InternalsVisibleTo属性? -
理想情况下我宁愿不这样做,但由于我确实可以控制定义
InternalType的库,所以这是我采用的解决方案。如果您将其转化为答案,我很乐意将其标记为正确答案。
标签: c# generics fakeiteasy