2011-01-31 40 views
0

我正在用SpecFlow在MVC3項目上做BDD。我目前的規範情景說:如何使用ASP.NET MVC進行規範測試錯誤視圖

Given a user is working on the system 
When an error is raised 
Then the user should be redirected to error page 
And display a link to go back where he came from 

我該如何測試這樣的規格?我通常直接測試控制器,但標準MVC3模板給出的錯誤視圖沒有控制器,也沒有使用控制器,因爲它被HandleError全局過濾器重定向。

在特殊情況下,我使用Watin來測試行爲是否符合規範所說的內容,但要做到這一點,我需要一個引發錯誤的視圖,當所有工作都沒有的時候。

任何關於這樣的測試場景的想法?

回答

0

我對這個方案的一些想法:

1)「給定一個用戶正在使用的系統」是一個很模糊的一步。在步驟定義中會找到哪些代碼?除非您有一個擁有WorkingOnSystem方法的用戶類,否則可能值得采用這一行。

2.)沒有看到你的代碼的其餘部分,我認爲這個特性的目標應該是HandleError過濾器本身。根據它的定義,你知道當它被調用時發生錯誤。您只需要實例化過濾器,調用適當的方法並測試結果。

想想這樣:在系統中「什麼時候發生錯誤」是什麼意思?如果你的HandleError過濾器不是這個地方,那麼你可能沒有a的地方。在這種情況下,你需要更具體。


我認爲這個規範的尷尬是由於ASP.Net MVC。當你處理一個抽象框架時,你有時候會把它的某些部分「包裝」出來。當應用程序的各個部分來自這麼多地方時,我們不能輕鬆地進行端到端的連接。

+0

我完全同意,規範真的很模糊。遵循yogur關於測試過濾器的明智建議,是否應該像這樣開始「鑑於發生了錯誤」? – 2011-02-02 06:48:50

相關問題