2011-01-25 9 views
4

私のチームは、S#arp Architectureフレームワークを使用してASP.Net MVC 2にコンテンツ管理Webホスティングアプリケーションを作成しています。私は、統合テストにはSpecFlowとWatiN、単体テストにはNUnitを使用しています。404のユニットテストまたは統合テストを見つけることはできますか?

URLとサイトに基づいてデータベース内のページを特定し、適切なコントローラとアクションをロードするカスタムコントローラーファクトリがあります。また、ページ(またはサイト)がデータベースに見つからないときにエラーコントローラを読み込みます。

URLが無効な場合、404ページが正しく表示されることを検証するユニットテストまたは統合テストのいずれかを書きたいと思っています。 WatiNは応答ヘッダーをチェックできないため、実際の404ページが確実に読み込まれているかどうかを正確に確認することはできません。これは、ソリューションとして統合テストを排除する可能性があります。

私はTDDとBDDを初めて使っているので、明らかに何かが不足している可能性があります。また、私はこのプロジェクトにテストをレトロフィットしているので、それはずっと難しくなっています。

ありがとうございます。

答えて

8

通常、BDDシナリオを書くときは、ユーザーの観点から記述します。

ユーザーが普通の人であれば、ヘッダーが本物か404かどうかはあまり気にしません。彼らは明確で有用なメッセージを与えるページを好むでしょう。シナリオを作成して、明確で有用なメッセージを確認します。

Given no section on unicorns exists 
When the user browses for horses 
And changes the url to be about unicorns 
Then the user should be told that no such page exists. 

BDDは実際にテストされていません。それはあなたが考えていない他のものを発見させ、何が起こるべきかの共通の理解を発展させる会話についてです。たとえば、通常のユーザーが管理ページにアクセスしようとするとどうなりますか?彼らは「アクセスが拒否されました」とか、単にそのページがあることを知らないのでしょうか?ページが削除されるとどうなりますか?これらの議論は、すべてを縛るよりも有用です。

404が特定のメッセージに関連付けられている場合は、適切な応答が一致するかどうかを単体テストできます。そうすれば、誤って間違ったコードを将来メッセージで送信する機会を大幅に減らすことができ、本当のメリットに集中することができます。

+0

「機能」と「仕様」を混同していると思います。アプリケーションは有効な404エラーページを返す必要がありますが、フィーチャーファイルと関連するテストがテストする適切な場所ではないかもしれないと言っています。フィーチャーファイルを仕様のリストとして見ていたので、思考に欠陥があるかもしれません。あなたは私の質問に答えました。ありがとう! – Eddie

+0

問題ありません。喜んで助けてください、あなたはアプローチが役に立つと思います。私は "仕様"という言葉は会話や発見に集中するのに役立つものではないので、私はそれを使う傾向がないと感じています。 「私にシナリオを教えてください...」は、ステークホルダーフレンドリーなIMHOです。がんばろう! – Lunivore

関連する問題