【发布时间】:2015-10-12 15:01:32
【问题描述】:
我发现了一堆 StreamReader 的例子,但是如何绕过内部构造函数?我需要使用内部构造函数创建一些公共类的假货,以便能够测试我的代码隔离。
想象一下我有
public class ChangesPostProcessor
{
public void Process(IEnumerable<DbEntityEntry> changes)
{
...
}
}
在这种特殊情况下,我需要伪造一组 DbEntityEntry 以便能够模拟他的众多方法(使用 DB)并隔离测试我的逻辑。
【问题讨论】:
-
您需要将接口应用到 DbEntityEntry 并注入它。这将允许您注入 IDbEntityEntry 的模拟。
-
DbEntityEntry 是实体框架中的类,我不能对其应用任何东西!
-
你可以把它包装起来,把接口应用到包装器上。
-
我什至不需要假货。但我真的很想避免它!
-
对于非接口或虚拟的东西,你需要使用 Shims 而不是 Fakes。
标签: c# .net entity-framework unit-testing microsoft-fakes