如何在ASP中对Json结果进行单元测试.NET MVC3网站

本文关键字:单元测试 NET MVC3 网站 结果 ASP 中对 Json | 更新日期: 2023-09-27 18:13:02

我正在尝试测试从ASP.NET MVC3 JsonView返回的Data值,但我不确定如何测试。


我有一个简单的ASP。NET MVC3网站,带有返回JsonView的操作方法。

例如(一些pseduo代码用于匿名类型列表(:

var lotsOfFail = database.GetMeThatDamnDataList();
var returnData = (from x in lotsOfFail
                  select new
                  {
                      Id = x.Id,
                      Name = x.Name
                      ..
                   }).ToList();
return Json(returnData, JsonRequestBehavior.AllowGet);

现在,在我的单元测试中,我试图测试Data的值。因此,根据各种建议,我正在做以下工作。。哪个-有效:-

// Act.
JsonResult jsonResult = controller.PewPewKThxBai(null, null);
// Assert.    
Assert.IsNotNull(jsonResult);
dynamic data = jsonResult.Data;
Assert.IsNotNull(data);
Assert.IsTrue(data.Count >= 0);

但我也希望对照固定的数据列表来测试返回的前三个结果。

注意我是如何获得以下代码的:var lotsOfFail = database.GetMeThatDamnDataList();嗯,数据库中填充了一些硬编码数据和一些随机数据。前三张唱片是硬编码的。

因此,我希望确保我可以测试我的硬编码数据。

像这样。。。

// Assert.    
Assert.IsNotNull(jsonResult);
dynamic data = jsonResult.Data;
Assert.IsNotNull(data);
var hardCodedData =
    FakeWhatevers.CreateHardcodedWhatevers()
    .Where(x => x.EventType == EventType.BannableViolation)
    .ToList();
Assert.IsTrue(data.Count >= hardCodedData .Count);
for (int i = 0; i < hardCodedData .Count; i++)
{
    Assert.AreEqual(data[0].Id== hardCodedData [0].GameServerId);
}

但由于data是动态的,我不知道如何测试它的特性。

有什么想法吗?

如何在ASP中对Json结果进行单元测试.NET MVC3网站

以下内容应该有效:

for (int i = 0; i < hardCodedData.Count; i++)
{
    Assert.AreEqual(hardCodedData[i].GameServerId, data[i].Id);
    Assert.AreEqual(hardCodedData[i].GameServerName, data[i].Name);
    ...
}

注意,我颠倒了参数的顺序,因为第一个是预期的,第二个是实际的。