Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何测试MVC视图?_C#_Asp.net_Unit Testing_Testing_Tdd - Fatal编程技术网

C# 如何测试MVC视图?

C# 如何测试MVC视图?,c#,asp.net,unit-testing,testing,tdd,C#,Asp.net,Unit Testing,Testing,Tdd,我的页面有以下隐藏字段 <%= Html.Hidden("SessionId", Model.Form.UniqueSessionId) %> 我希望能够测试视图是否有隐藏字段 protected SomeController controller; protected void SetupController() { controller = new SomeController() } [Test] public void view_has_hidden_field_

我的页面有以下隐藏字段

<%= Html.Hidden("SessionId", Model.Form.UniqueSessionId) %>
我希望能够测试视图是否有隐藏字段

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" />"));
}
受保护的SomeController;
受保护的无效设置控制器()
{
控制器=新控制器()
}
[测试]
public void view_有_隐藏的_字段_用于_SessionId()
{
ViewResult=controller.Index()作为ViewResult;
Assert.IsTrue(result.contains(“”);
}

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

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


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

这个问题不是重复的,但答案可以在找到。引用Bob叔叔(Robert Martin):“用你的眼睛”我想这里的问题是:你真的想对视图进行单元测试吗。
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" />"));
}