2015-10-15 66 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