XUnit 使用字典作为 MemberData
XUnit Using a Dictionary As MemberData
我对如何让 XUnit 测试方法接受字典作为参数的语法有疑问。这是我损坏的代码:
Public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static object[] dicList = new object[] { vals };
[Theory]
[MemberData(nameof(dicList))]
public void CheckSomething_ReturnsSomething(Dictionary<string, string> values)
{
test stuff...
我收到一个错误,我从抛出的错误中了解到我需要 return 类型的
IEnumerable<object[]>
我不确定如何用字典实现这一点。
已按照建议添加了一些代码:我仍然遇到错误:
public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static IEnumerable<object[]> dicList = new List<object[]> { new object[] { vals } };
[Theory]
[MemberData(dicList)] //error here
public void DriverLogon_CheckParams(Dictionary<string, string> values)
{
}
新错误是
error. "Cannot convert from IEnumerable<object[]> To string
dicList 必须是 IEnumerable<object[]>
,如错误消息所述。这是因为 dicList 中的一项包含一个测试的所有参数值(这对您的情况无关紧要,因为您只有一个参数,但知道这一点很好)。
所以你的 dicList 变成了 List<object[]>
而不是普通的对象数组:
public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static IEnumerable<object[]> dicList = new List<object[]> { new object[] { vals } };
我对如何让 XUnit 测试方法接受字典作为参数的语法有疑问。这是我损坏的代码:
Public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static object[] dicList = new object[] { vals };
[Theory]
[MemberData(nameof(dicList))]
public void CheckSomething_ReturnsSomething(Dictionary<string, string> values)
{
test stuff...
我收到一个错误,我从抛出的错误中了解到我需要 return 类型的
IEnumerable<object[]>
我不确定如何用字典实现这一点。
已按照建议添加了一些代码:我仍然遇到错误:
public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static IEnumerable<object[]> dicList = new List<object[]> { new object[] { vals } };
[Theory]
[MemberData(dicList)] //error here
public void DriverLogon_CheckParams(Dictionary<string, string> values)
{
}
新错误是
error. "Cannot convert from IEnumerable<object[]> To string
dicList 必须是 IEnumerable<object[]>
,如错误消息所述。这是因为 dicList 中的一项包含一个测试的所有参数值(这对您的情况无关紧要,因为您只有一个参数,但知道这一点很好)。
所以你的 dicList 变成了 List<object[]>
而不是普通的对象数组:
public static Dictionary<string, string> vals = new Dictionary<string, string> { { "a", "1" }, { "b", "2" }, { "ca", "3" } };
public static IEnumerable<object[]> dicList = new List<object[]> { new object[] { vals } };