我可以更改测试中所有垫片的默认行为吗?

本文关键字:默认 测试 我可以 | 更新日期: 2023-09-27 18:03:04

我目前正在使用Microsoft Fakes框架编写单元测试。我注意到,如果我不为给定的属性提供委托,则返回默认值。然而,当初始化我的shim时,我将此行为更改为notimented。

var myShim = new ShimMyClass
{
    InstanceBehavior = ShimBehaviors.NotImplemented
}

这是我定义的所有垫片的给定行为。我希望能够在更全局的层面上设置这个默认值,而不是必须记住为我创建的每个shim都这样做。这可能吗?

我可以更改测试中所有垫片的默认行为吗?

根据文档,下面的代码片段可以帮助您:

using (ShimsContext.Create())
{
     ShimBehaviors.Current = ShimBehaviors.NotImplemented;
     var myShim = new ShimMyClass
     { 
         ... 
     }
}

然而,它不工作在我的机器与VS2012。

创建一个类,作为您编写的所有脚本的父类。在这个类中有一个

protected static ShimBehavior Default = ShimBehavior.NotImplemented;

然后创建构造函数:

public ShimSuperClass
{
    InstanceBehavior = Default
}

确保在所有子类中调用base()构造函数