簡體   English   中英

測試用例在 Null 斷言上失敗

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


謝謝!

您可以使用JTokenValueHasValue

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);

這取決於您要檢查的內容:

  1. 分數在那里,但值為 null
  2. 只是為了確保沒有分數(所以 null 或缺少存在都可以
  3. 別的東西。

我想檢查分數是否存在,值為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM