在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Asp.net MVC 3 应用程序中,单元测试对项目的质量意义重大。除了对Model,Controller进行单元测试,有时还需要对View也进行。对View进行测试目前并不容易做,大多数情况下可能做的是BlackBox测试。现在可以使用Razor Generator简化对Razor View单元测试。你可以从这里安装 VS2010的扩展。 然后在VIEW上右键属性,对Custom Tool 使用Razor Generator,如下图,它就生成一个对应名称的Class, 文件与View在同一位置。 然后我们看这个Class是这样的: [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "1.3.0.0")] [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Home/TestViewInOutTime.cshtml")] public class TestViewInOutTime : System.Web.Mvc.WebViewPage<dynamic> { public TestViewInOutTime() { } public override void Execute() { #line 1 "..\..\Views\Home\TestViewInOutTime.cshtml" Layout = null; #line default #line hidden WriteLiteral("\r\n<!DOCTYPE html>\r\n\r\n<html>\r\n<head>\r\n <title>TestViewInOutTime</title>\r\n</head" + ">\r\n<body>\r\n <div>\r\n <h1 id=\"titleOne\">This is your life</h1>\r\n </di" + "v>\r\n</body>\r\n</html>\r\n"); } }
这个View的内容是: @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>TestViewInOutTime</title> </head> <body> <div> <h1 id="titleOne">This is your life</h1> </div> </body> </html>
[TestMethod] public void TestGetGivenIdInnerHtmlFromViews() { //arrange var views = new TestViewInOutTime(); //act HtmlDocument doc = views.RenderAsHtml(); HtmlNode node = doc.GetElementbyId("titleOne"); //assert Assert.IsNotNull(node); Assert.AreEqual("This is your life", node.InnerHtml.Trim()); }
然后我们找到titleOne的结点比较的它的InnerHtml。那么对PartialView同样也可以:
代码是这样的: [TestMethod] public void TestPartialView() { //arrange var views = new Tel(); //act HtmlDocument doc = views.RenderAsHtml(); //assert Assert.IsNotNull(doc); Assert.AreEqual("021-77677878", doc.DocumentNode.InnerText); }
希望对您开发有帮助。
|
请发表评论