小编Jen*_*enk的帖子

在ASP.NET MVC中对呈现的视图进行单元测试

我很遗憾再次击败这个鼓,但我一直在寻找一种方法来对ASP.NET MVC中的渲染视图进行单元测试(目前使用的是v2).

我不是百分之百满意使用WatiN或Selenium来做到这一点,它们都是很棒的工具,但是对于这么简单的场景运行测试需要太长时间,并且测试方式比我需要的方式更多.

我也非常不满意"视图不应该被测试"的口头禅似乎源于视图的根本原因,在它们当前的状态下,在更大的集成测试之外是不可测试的.:)

我已经在Controller上测试了"AssertViewRendered().For("Index").WithViewData()"等等.我只是想要覆盖视图在模型上显示的数据.

想象一下这个简单的场景:

控制器:

public class SimpleController : Controller
{
    public void Index()
    {
        var vm = new SimpleViewModel { Message = "Hello world!" };
        return View(vm);
    }
}
Run Code Online (Sandbox Code Playgroud)

而这个简单的视图模型:

public class SimpleViewModel
{
    public string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

一个简单的观点:

`<%@ Page Language="C#"` `Inherits="System.Web.Mvc.ViewPage<SimpleViewModel>" %>`
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        <h1><%= Model.Message %></h1>
    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

如何使用View实际使用Message属性的简单单元测试进行自动化,而无需使用WatiN等重量级集成测试工具,也无需使用Web服务器?

这样的事情是理想的:

    [TestMethod]
    public void ShouldDisplayMessage()
    {
        const string helloWorld = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc unit-testing

9
推荐指数
1
解决办法
3767
查看次数

标签 统计

asp.net-mvc ×1

c# ×1

unit-testing ×1