【问题标题】:How can I test MVC Views?如何测试 MVC 视图?
【发布时间】:2013-07-31 22:35:28
【问题描述】:

我的页面有以下隐藏字段

<%= 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" />"));
}

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

【问题讨论】:

  • 这个问题不是重复的,但是可以在stackoverflow.com/questions/9243433/…找到答案。
  • 引用 Bob 叔叔(罗伯特·马丁)的话:“用你的眼睛”
  • 我认为这里的问题是:你真的想对视图进行单元测试吗?

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


【解决方案1】:

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

Render a view as a string

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多