[英]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.