"packages": [
{
"TriggerType": "sample",
"StatusDescription": "",
"Score": null,
"Percentile": null,
"Band": ""
}
]
当我使用 JObject attachmentData = JObject.Parse(targetPayload);
解析这个 JSON 时
并执行单元测试。
Assert.AreEqual("", attachmentData.SelectToken("packages")[0].SelectToken("Score").ToString());
这很好用,但我想检查一下
Assert.AreEqual(null, attachmentData.SelectToken("packages")[0].SelectToken("Score").ToString());
or
Assert.IsNull(attachmentData.SelectToken("packages")[0].SelectToken("Score").ToString());
出现以下错误。
Assert.AreEqual failed. Expected:<(null)>. Actual:<>
{"Assert.IsNull failed. "}
谢谢!
答案 0 :(得分:1)
您可以使用 JToken
的 Value
或 HasValue
:
var score = o.SelectToken("packages")[0].SelectToken("Score");
// score.Value is null
// score.IsValue is false
在您的测试中:
Assert.AreEqual(null, attachmentData.SelectToken("packages")[0].SelectToken("Score").Value);
请注意,如果没有 score
(或 packages
),这将抛出,您可能需要:
Assert.AreEqual(null, attachmentData.SelectToken("packages")?[0]?.SelectToken("Score")?.Value);
这取决于您要检查的内容:
我想检查分数是否存在且值为空
var score = attachmentData.SelectToken("packages")?[0]?.SelectToken("Score");
Assert.IsNotNull(score);
Assert.IsFalse(score.Value<string>());
或
Assert.IsNotNull(score);
var v = (JValue)score;
Assert.IsNull(v.Value);