unit-testing - 有没有办法对 View 中设置的 ASP.NET MVC ViewBag 属性进行单元测试?

标签 unit-testing asp.net-mvc-3

假设我在页面顶部有一个包含以下代码的 View :

@{
    ViewBag.Title = "About Us";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

我有一个 Controller 方法:

    public ActionResult About()
    {
        return View();
    }

如何测试 ViewBag 是否设置正确?

我尝试过以下代码。

[TestCase]
public void About()
{
    var controller = new AboutController();
    var ar = controller.About() as ViewResult;
    Assert.AreEqual("About Us", ar.ViewBag.Title);
}

但是当我运行测试时,我得到以下结果:

Tests.Controllers.AboutControllerTests.About():
    Expected: "About Us"
    But was: null

最佳答案

由于 ViewData 和 ViewBag 使用相同的存储模式,因此您应该能够在测试中使用 ViewData[yourKey]

所以你的测试将如下所示:

[TestCase]
public void About()
{
    var controller = new AboutController();
    var ar = controller.About() as ViewResult;
    Assert.AreEqual("About Us", ar.ViewData["Title"]);
}

关于unit-testing - 有没有办法对 View 中设置的 ASP.NET MVC ViewBag 属性进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4661617/

相关文章:

asp.net-mvc - MVC : Simplest way to create a link to the application base URL?

设置值时 Angular react 形式测试不起作用。如何进行单元测试?

python - MagicMock 对象可以迭代吗?

c# - 取消测试(带有警告)

unit-testing - 如果没有断言,是否可以强制单元测试失败?

asp.net-mvc-3 - 在 ASP.NET MVC htmlAttributes 中使用 @data-bind 抛出异常

jquery - jcarousel如何垂直居中元素

unit-testing - 模拟 SQL 输出参数

javascript - 将字典对象从 Controller 传递给 Javascript

asp.net - 如何让 Url.Action 使用正确的端口号?