2011-01-31 18 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テンプレートで与えられたエラービューにはコントローラがなく、Controllerは使用されません。これは、HandleErrorグローバルフィルタによってリダイレクトされるためです。

例外的に私はWatinを使用して動作が仕様に準拠しているかどうかをテストしますが、エラーを発生させるビューが必要です。

このようなテストシナリオに関するアイデアはありますか?私はこのシナリオには、いくつか考えてい

答えて

0

1)は、「ユーザーを考えると、システムに取り組んでいるが、」かなり曖昧なステップです。ステップ定義にはどのようなコードがありますか? WorkingOnSystemメソッドを持つユーザークラスを持っていない限り、この行を取り出す価値があります。

2)コードの残りの部分を見ずに、この機能のターゲットはHandleErrorフィルタそのものにする必要があります。非常に定義されることによって、呼び出されたときにエラーが発生したことがわかります。フィルタをインスタンス化し、適切なメソッドを呼び出し、結果をテストするだけです。

このように考える:「エラーが発生したとき」とは、システムではどういう意味ですか?あなたのHandleErrorフィルタが場所でない場合、おそらく場所がありません。その場合は、より具体的にする必要があります。


この仕様の厄介さは、ASP.Net MVCによるものだと思います。抽象概念のフレームワークを扱うとき、時には仕様の一部を "包む"ことがあります。アプリケーションの部分が非常に多くの場所から来たときに、エンドツーエンドで簡単に移動することはできません。

+0

私は全く同意しません、仕様は本当に曖昧です。フィルタに対するテストについてのyogur素晴らしいアドバイスに続いて、spec steptが "エラーが発生しました"のように開始する必要がありますか? –

+0

私はこの場合、ハンドルエラーフィルタに対してテストを書くと、When節として記述したいと思うでしょう。このように: サイトでエラーが発生した場合 次に、ユーザーをリダイレクトする必要があります。 エラーのログを作成する必要があります – Darren

関連する問題