我要使用XUnit,将字符串列表传递给测试(使用ClassData
或MemberData
)。有没有办法做这样的事,但有一个清单:
之前:
public static IEnumerable<object[]> GetPersonFromDataGenerator()
{
yield return new object[]
{
new Person {"Tribbiani"},
new Person {"Gotti"},
new Person {"Sopranos"},
new Person {"Corleone"}
};
}
之后:
public static IEnumerable<object[]> GetPersonFromDataGenerator()
{
var listOfPersons = GetList();
yield return new object[]
{
foreach(var p in listOfPersons)
{
new Person {p}
}
};
}
它必须为IEnumerable<object[]>
,这是XUnit ClassData
和MemberData
固定装置所必需的。
答案 0 :(得分:1)
为什么不只是
public static IEnumerable<Person> GetPersonFromDataGenerator()
{
foreach (var p in GetList())
yield return p;
}
请记住,枚举器可以在方法中多次“屈服回报”!
或者,如果您确实要返回多个对象数组,则代码可能类似于:
public static IEnumerable<object[]> GetPersonFromDataGenerator()
{
var listOfPersons = GetList();
yield return listOfPersons.ToArray();
}
ToArray()会为您将列表转换为数组。
答案 1 :(得分:1)
是的
yield return listOfPersons.Select(p=> new Person(p)).ToArray();