約半年前、単体テストを掘り下げ始めました。私はTDD(または私がそう思っていたもの)に進み、MVCアプリケーションの動作駆動型を開発したいと考えています。私の最後のプロジェクトは受け入れテスト可能な環境で実行されなかったので、受け入れテスト (実際のエンドツーエンド) の概念は私にとって新しいものです。
私はいくつかの良い記事、特にサンダーソンのhttp://blog.stevensanderson.com/2010/03/03/behavior-driven-development-bdd-with-specflow-and-aspnet-mvc/を読むことから始め、私のバックアップを取っています。そのトピックに関する彼の本を読んで、MVC スキルを習得します。
エンドツーエンドのテストには SpecFlow と SimpleBrowser を使用しています。ナビゲーション バーからナビゲーションを操作するのは簡単なことでしたが、今は行き詰っています。さらに記事を作成したりコメントしたりするためのユーザー アカウントを実装することを目指しています。登録プロセスを推進するのは頭痛の種でした。この機能ファイルの場合:
Feature: User accounts
In order to customize and influence page content
As a user
I want to able to create an own user account
Scenario: Create a user
Given I am on the /Account/Create page
When I fill out the registration formular as follows
| NickName | EmailAddress |
| test123 | test.address@test-server.com |
And I click the "Create" button
And I clicked the link in the authentication mail
Then I should be on the root page
And I should see the message "Welcome test123!"
必要なテスト環境 (この例ではメール サーバー) を提供し、テストの脆弱性を軽減する方法がわかりません ([作成] ボタンのラベルを [送信] に変更することを考えてみてください)。キャプチャジェネレーターを織り込んで、後で自動ユーザー作成を防ぐことは言うまでもありません (皮肉なことです)。先のことを考えすぎているだけかもしれませんが、実際には TDD ではそうすべきではありませんが、画面を見つめて次のテストのことを考えていることがあります。
スー..そのテキストの壁の後に、実際の質問:この種の動作をどのように実装すればよいですか?
- UI レベルのテストに固執し、キャプチャ ロジックを実装するために必要に応じてリファクタリングする
- コントローラー レベルのテストにフォールバックする
- あなたが私を啓発する他の方法