4

私のチームは、S#arp アーキテクチャ フレームワークを使用して、ASP.Net MVC 2 でコンテンツ管理の Web ホスティング アプリケーションを作成しています。統合テストには SpecFlow と WatiN を使用し、単体テストには NUnit を使用しています。

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

URL が無効な場合に 404 ページが適切に表示されることを検証する単体テストまたは統合テストを作成したいと考えています。WatiN は応答ヘッダーをチェックできないため、実際の 404 ページが読み込まれたことを正確に確認できません。これにより、ソリューションとして統合テストが不要になる場合があります。

私はTDDとBDDを初めて使用するので、明らかな何かが欠けている可能性があります。また、私はこのプロジェクトにテストを後付けしているため、さらに困難になっています。

前もって感謝します。

4

1 に答える 1

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 がユーザーへの特定のメッセージに関連付けられている場合は、適切な応答が一致することを単純に単体テストできます。これにより、将来誤って間違ったコードをメッセージで送信する可能性が大幅に減少し、本当のメリットに集中できます。

于 2011-01-25T17:51:30.690 に答える