Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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# 使用AutoFixture使用有限的字符集之一填充对象特性_C#_Autofixture - Fatal编程技术网

C# 使用AutoFixture使用有限的字符集之一填充对象特性

C# 使用AutoFixture使用有限的字符集之一填充对象特性,c#,autofixture,C#,Autofixture,我使用AutoFixture生成用于测试的ProblemClass对象列表。ProblemClass定义为 public class ProblemClass { int Id {get; set;} string ProblemField {get; set;} } ProblemField可以包含3个值“A”、“B”或“C”中的一个。我无法更改ProblemClass,因此无法使ProblemField成为枚举 如何让AutoFixture使用“A”、“B”或“C”随机填充

我使用AutoFixture生成用于测试的ProblemClass对象列表。ProblemClass定义为

public class ProblemClass
{
    int Id {get; set;}
    string ProblemField {get; set;}
}
ProblemField可以包含3个值“A”、“B”或“C”中的一个。我无法更改ProblemClass,因此无法使ProblemField成为枚举

如何让AutoFixture使用“A”、“B”或“C”随机填充列表中每个对象的ProblemField属性

(例如,
myList[0]。ProblemField
为“A”,
myList[1]。ProblemField
为“C”,等等)


谢谢

您喜欢这项工作吗

public class ProblemClass
{
    static Random r = new Random();
    const string options = "ABC";

    public ProblemClass(int id)
    {
        Id = id;
        ProblemField = options[r.Next(options.Length)].ToString();
    }

    public int Id { get; }
    public string ProblemField { get; }
}

您可以自定义ProblemClass的生成方式

这应该起作用:

夹具
.定制(ob=>
ob
.与(
x=>x.ProblemField,
(inti)=>“ABC”。子字符串(i%3,1));
更多信息:


不幸的是,我无法更改问题类别。它保持原样,我需要使用AutoFixture创建它的实例。ProblemField属性上没有访问修饰符,但我猜它实际上是公共的?这是
ProblemClass
定义准确吗?抱歉,这两个属性都是公共的。