繁体   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