[英]Test Cases Fail On Null Assertion
"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. "}
谢谢!
您可以使用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);
这取决于您要检查的内容:
我想检查分数是否存在,值为 null
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.