【问题标题】:How can I unit test my Json result in an ASP.NET MVC3 web site?如何在 ASP.NET MVC3 网站中对我的 Json 结果进行单元测试?
【发布时间】:2011-12-19 06:07:36
【问题描述】:

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


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

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

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是动态的,所以我不知道如何测试它的属性。

有什么想法吗?

【问题讨论】:

    标签: c# .net asp.net-mvc unit-testing


    【解决方案1】:

    以下应该有效:

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

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

    【讨论】:

    • 这是因为动态需要排在第二位吗?为什么等式的排序会影响事物?
    • Ah bleh :) 我现在也看到了我的错误。我不应该做一个==,而是两个论点。干杯:)
    • @Pure.Krome,订购不会产生任何影响。这只是惯例。这样,当您的单元测试失败时,您会收到一条有意义的消息:expected: 1, actual: 2。如果您在测试失败时将参数以错误的顺序排列,您会想知道为什么当我的 hardCodedData 包含 2 时,您究竟期望 1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    相关资源
    最近更新 更多