2015-10-15 36 views
0

我想在我的项目中编写一个测试,专门查看HTML并告诉我某个单词的每个实例是否总是以某种方式格式化。假设我们公司有一个名为“WidgetFactory”的产品。我想确保这个“WidgetFactory”始终以相同的方式大写,并始终在<strong>标记内。查看单词/短语的单元测试格式

我不确定单元测试的最佳做法是什么。我浏览了预编译的视图,但它看起来不太对。这可能是最好的解决方案。我可能可以打开每个.cshtml文件并尝试解析它,以便仅查看HTML文本,但这可能存在问题,我不想编写Razor解析器。

这是可能的,还是这是一个完全错误的方式使用单元测试?

回答

1

这种测试应该在集成测试中完成,而不是单元测试。您不想在每次运行其他测试时运行该程序,只有在您推入产品之前进行运行,才能在Jenkinsappveyor等持续集成系统中运行。您可以使用诸如Selenium Webdriver之类的工具来打开浏览器(如Chrome),并验证最终结果是否包含您希望的文本。

我建议你看看page pattern它真的帮了我们。

这里有一个样品的测试可能是什么样子,请注意,我们有很多帮助,使测试干净,容易阅读/维护:

[Test] 
    public void CreateViewAndEditShouldWork() 
    { 
     S.OpenWithCI(); 
     var loginPage = new LoginPage(S); 
     var centerListPage = loginPage 
      .LoginValidUser("username", "password") 
      .MenuClickCenterAndRoomLink(); 
     var centerPage = centerListPage.ClickCreateLink(); 

     //Create 
     centerPage.Submit(); 
     Assert.That(centerPage.Error("Name"), Is.StringContaining(Strings.Error_Required)); 
     Assert.That(centerPage.Error("EnglishName"), Is.StringContaining(Strings.Error_Required)); 

     centerPage.Name = "Saguenay"; 
     centerPage.EnglishName = "Sag"; 
     centerPage.Address = "2089 blv Talbot"; 
     centerPage.DivisionAfiSelected = true; 
     centerPage.Submit(); 

     centerListPage.ExpectSuccessNotice(Strings.CenterCreatedSuccessfully); 

     //View 
     var centerDetailsPage = centerListPage.ClickDetailsLink("Saguenay"); 
     Assert.That(centerDetailsPage.Title, Is.StringContaining("SAGUENAY")); 
     Assert.That(centerDetailsPage.Details, Is.StringContaining("Inactive")); 
     Assert.That(centerDetailsPage.Details, Is.StringContaining("2089 blv Talbot")); 

     //Edit 
     centerPage = centerDetailsPage.ClickEdit(); 
     centerPage.Name = "Chicoutimi"; 

     centerPage.Submit(); 
     centerListPage.ExpectSuccessNotice(Strings.CenterUpdatedSuccessfully); 
    } 

希望它能帮助!

+0

好信息!我对测试很陌生(除了运行和手动尝试),但我将不得不对集成测试进行一些研究。谢谢! – bradlis7