我正在尝试使用xunit的MemberDataAttribute
来返回键/值列表。
例如,像这样:
[Theory]
[MemberData("ValidCardData")]
public void GivenANumber_Constructor_CreatesANewInstance(NotSureWhatType data)
{
..
}
这就是我试图制作实际数据的方式。
public static IEnumerable<object> ValidCardData
{
get
{
var json = File.ReadAllText("Data\\ValidCards.json");
var cardNumbers = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(json);
return cardNumbers
.Select(x => new KeyValuePair<string, string[]>(x.Key, x.Value))
.ToList()
.Cast<IEnumerable<object>>();
}
}
但它不起作用:
System.InvalidCastExceptionUnable可以转换类型的对象 'System.Collections.Generic.KeyValuePair
2[System.String,System.String[]]' to type 'System.Collections.Generic.IEnumerable
1 [System.Object的]'。
有人可以帮忙吗?
答案 0 :(得分:4)
您正在尝试将字典的每个键/值对投射到IEnumerable。
如果cardNumbers
是Dictionary<string, string[]>
,那么您可以这样做:
return cardNumbers.Cast<object>();
字典是IEnumerable<KeyValuePair>
开头的,所以你只需要将它们作为对象输入。