我如何测试MVC视图?

时间:2013-07-31 22:35:29

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

我的网页有以下隐藏字段

<%= Html.Hidden("SessionId", Model.Form.UniqueSessionId) %>

我的控制器

public class SomeController 
{
    public ActionResult Index()
    {
        var somemode = new GetSomeModel();
        return View(somemodel);
    }
}

我想测试视图是否有隐藏字段

protected SomeController controller;

protected void SetupController()
{
   controller = new SomeController()
}

[Test]
public void view_has_hidden_field_for_SessionId()
{
    ViewResult result = controller.Index() as ViewResult;
    Assert.IsTrue(result.contains("<input type="hidden" id="SessionId" />"));
}

问题是:如何将视图呈现为字符串?有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

看看这个支持剃刀视图和标准asp.net视图的解决方案:

Render a view as a string

我对你的另一个建议是使用html解析器,例如HtmlAgilityPack,这样你就可以查询它以找到隐藏的字段。这种方法更好,因为对string.contains的测试会在你重构你的html时使你的测试变得脆弱。