Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# microsoft仅伪造静态类的存根静态属性_C#_Microsoft Fakes - Fatal编程技术网

C# microsoft仅伪造静态类的存根静态属性

C# microsoft仅伪造静态类的存根静态属性,c#,microsoft-fakes,C#,Microsoft Fakes,是否可以使用Microsoft Fakes framework在静态类中填充静态属性 如果不是,为什么存根可以工作,而垫片不能工作 这是我的班级代码: public static class Globals { public static List<string> greatStations = new List<string>(); } 以下是我的测试代码: [TestMethod] public void TestMethod1() { using

是否可以使用Microsoft Fakes framework在静态类中填充静态属性

如果不是,为什么存根可以工作,而垫片不能工作

这是我的班级代码:

public static class Globals
{
    public static List<string> greatStations = new List<string>();
}
以下是我的测试代码:

[TestMethod]
public void TestMethod1()
{
    using (ShimsContext.Create())
    {
        var shim = new Fakes.ShimGlobals { };
        Fakes.StubGlobals.greatStations = new List<string>();
        // Next line complains that ShimGlobals does not contain a definition for 'greatStations'
        Fakes.ShimGlobals.greatStations = new List<string>(); 
    }
}

使用Fakes,您可以存根类和接口的虚拟属性和方法。您可以填充非虚拟属性和方法实例和静态。字段不需要填充或存根,因为它们可以直接设置,如下所示

Globals.greatStations = new List<string>();

使用Fakes,您可以存根类和接口的虚拟属性和方法。您可以填充非虚拟属性和方法实例和静态。字段不需要填充或存根,因为它们可以直接设置,如下所示

Globals.greatStations = new List<string>();

在静态类中,greatStations不是属性,它是公共字段。@BFree所以只能填充属性?但是你可以存根字段和属性?我只在叫做Moles的时候用过赝品,我知道在那里不可能存根字段。我正在尝试找到证明/反驳这一点的文档。StimoTo:考虑重构代码。如果需要替换它进行测试,它本来就不应该是静态的。在静态类中,greatStations不是属性,而是公共字段。@BFree所以只能填充属性?但是你可以存根字段和属性?我只在叫做Moles的时候用过赝品,我知道在那里不可能存根字段。我正在尝试找到证明/反驳这一点的文档。StimoTo:考虑重构代码。如果它需要被替换以进行测试,那么它一开始就不应该是静态的。因此,当您添加Fakes程序集时,它不会为任何字段生成Fakes。这对吗?对。字段可以直接访问,不需要伪造。因此,当您添加伪造程序集时,它不会为任何字段生成伪造。这对吗?对。字段可以直接访问,不需要伪造。