Pet*_*háč 8 c# json unit-testing dynamic asp.net-mvc-2
我的ASP.NET MVC2应用程序中的一个操作方法返回一个JsonResult对象,在我的单元测试中,我想检查返回的JSON对象是否确实包含了预期的值.
我试过这个:
1. dynamic json = ((JsonResult)myActionResult).Data;
2. Assert.AreEqual(JsonMessagesHelper.ErrorLevel.ERROR.ToString(), json.ErrorLevel);
Run Code Online (Sandbox Code Playgroud)
但我得到一个RuntimeBinderException"'对象'不包含'ErrorLevel'的定义".
然而,当我把第2行断点和检查JSON动态变量(见下图),这显然不包含的ErrorLevel字符串,它的预期值,因此,如果运行时绑定是不是在玩有趣的测试将通过.

我得不到什么?我做错了什么,我该如何解决这个问题?如何让断言通过?
Dar*_*rov 15
你真的不需要动态.这是一个例子.假设您有以下要进行单元测试的操作:
public ActionResult Index()
{
return Json(new { Id = 5, Foo = "bar" });
}
Run Code Online (Sandbox Code Playgroud)
和相应的测试:
// act
var actual = subjectUnderTest.Index();
// assert
var data = new RouteValueDictionary(actual.Data);
Assert.AreEqual(5, data["Id"]);
Assert.AreEqual("bar", data["Foo"]);
Run Code Online (Sandbox Code Playgroud)
您也可能会发现以下博客文章很有用.
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |