2009-11-07 51 views
6

我正在開始爲我的MVC應用程序編寫單元測試。我已經想出瞭如何對控制器進行單元測試,並且可以毫無問題地對我的底層業務庫進行單元測試。儘管如此,我還是放棄了幾項:如何在nUnit中測試我的asp.net mvc應用程序的視圖和授權屬性?

  • 我該如何測試我的觀點?也就是說,控制器返回了正確的視圖(我已經過單元測試,以及單元測試以檢查它是否傳遞了正確的數據)之後。有沒有辦法單元測試視圖顯示正確的數據在nUnit的正確的領域或我需要一個不同的工具來達到這個目的?

  • 如何對安全性進行單元測試?我正在使用一個自定義的成員資格提供者和角色提供者,他們本身就像其他任何組件一樣可以進行單元測試 - 我只是提供了一個提供者,並檢查每個方法是否會返回預期的輸出。我很好奇的是,如何對我的每個控制器方法從我的提供者那裏接收正確的安全信息進行單元測試[即單元測試Authorize屬性是否正常工作]?

回答

3

以下是關於單元測試自定義授權組件的博客文章。它不涉及RoleProviders和MembershipProviders,但您應該能夠有效地使用相同的方法來測試任意數量的過濾器。

http://darioquintana.com.ar/blogging/2009/05/23/aspnet-mvc-testing-a-custom-authorize-filters/

免責聲明:這可能需要一對夫婦的解析,瞭解它 - 它不是寫得很清楚,並提供的示例代碼不準確切入正題下去,但你應該能夠收集到什麼你需要它。

0

對於UI(控制器和向下)以下集成測試,你可以使用類似Fit, FitNesseSlim,甚至StoryTeller

對於UI測試(您的視圖),您應該考慮使用SeleniumSelenium RC

我意識到這是很多信息,但它會適合你,當它涉及到一個更強大的測試解決方案。

+0

對於控制器而言,我傾向於使用nUnit--我已經熟悉庫級別的單元測試,所以這不是問題。我承認我從來沒有聽說過Slim或StoryTeller,所以我會檢查出來。儘管如此,我會檢查Selenium的視圖測試。 – BobTheBuilder 2009-11-07 15:21:40

+0

硒RC當然看起來很有趣。我沒有想到單元測試會在瀏覽器中完成。我原先的看法是,單元測試將在HTTP輸出中以nUnit運行。 – BobTheBuilder 2009-11-07 15:28:01

+0

即使在您的單元測試中,您也希望清晰分離問題。我通常不會讓我的單元測試(Nunit,MsTest等)觸摸數據庫或除當前被測試主題以外的其他任何東西。 Fit,FitNesse,Slim和StoryTeller非常適合集成測試,但不應該用於單元測試。測試用戶界面應該非常淺薄,應該只測試用戶界面的功能。它不應該在任何情況下檢查引擎蓋下的東西(即數據庫,控制器等) – Josh 2009-11-07 16:47:10

1

您可以使用Ivonna(商業工具)或MvcIntegrationTestFramework(免費)。兩者都支持在進程中測試你的視圖,但是Ivonna可以讓你嘲笑其餘部分,調整你的配置等等,所以它更多的是在單元測試方面。

相關問題