【问题标题】:How to isolate (detour) internal constructor with Microsoft Fakes shim?如何使用 Microsoft Fakes shim 隔离(绕行)内部构造函数?
【发布时间】: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


【解决方案1】:

我终于采用了包装方法,并用我自己的带有公共构造函数的类实现了 IDbEntityEnty 接口,其中包含 DbEntityEntry。 它让我进行测试,但让我重写大量代码以将依赖关系从 DbEntityEntry 更改为 IDbEntityEntry。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多