假设我在页面顶部有一个包含以下代码的 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/