2013-06-11 18 views
1

我是MVC的新手。我已經開始爲這些操作創建TestMethod。目前我正在爲以下三種類型創建TestMethod。什麼是TestMethod for MVC的場景Action方法

由控制器操作返回的視圖: - 比較視圖名稱。 測試控制器操作返回的查看數據。 測試一個控制器動作是否將您重定向到第二個控制器動作。

我還有其他情況嗎?

回答

0

最近,我不得不問自己同樣的問題,這裏是我做過什麼:

我測試的意見(而不是視圖中的數據),所以測試重定向和視圖名稱對我來說就足夠了。

如果我開始測試數據,那麼我期望系統的某些其他部分以某種方式(映射器,服務層,存儲庫)返回某些數據。但是現在我不再測試我的視圖了我正在測試我的服務層返回特定值,並且我的映射器正確映射了這些值。所以我把它留給我的資料庫/服務測試。

雖然每個人都是他自己 - 每個人都是不同的。

0

不錯,如果你可以發佈你想要測試的確切行動。看起來你已經覆蓋了大部分,下面是你可能想要考慮的一些想法。

是的,你會寫一個單元測試來比較視圖名稱。如果有人將您的操作更改爲重定向到其他視圖,那麼您希望測試失敗。

不確定您的操作是以RedirectRouteResult還是以ViewResult的形式返回。除非您的操作執行重定向,否則我不會爲重定向編寫單元測試。你會贊成測試當前的行爲,反對未實施的行爲。如果你的動作執行重定向,那麼你會爲此寫一個測試。

如果ActionResult返回一個ViewData是你會寫一個測試,確保結果包含預期的視圖數據。這是IMO的一個重要測試。

如果您有行動中的存儲庫調用或服務調用,那麼您也可以編寫一個測試來驗證模擬/服務是否被調用了期望的參數。如果您使用的是Moq等隔離框架,則可以輕鬆設置此預期。並非總是如此,但有時候,如果你的行爲方法微不足道,這可能會有用。

如果你想更多的通過,我還會寫一個測試來確保你的動作方法是用某個屬性裝飾的。例如[HttpPost],[HttpGet]或您可能使用的任何其他屬性。

看到我下面的帖子應該給你一些例子。 http://blog.rajsoftware.com/post/2012/12/04/Simple-test-helper-MVC-Action-has-decorated-with-a-certain-attribute.aspx

也只是要清楚,你不想在一個單元測試中測試所有這些場景。他們應該在單獨的測試中。

重要的是看看Action,並確保您的測試儘可能覆蓋Action的實施行爲。

相關問題