ストーリーは、ユーザーが実際に実行または観察する動作をテストするときに役立つと思います。したがって、「失敗したログイン」テンプレートがレンダリングされることをテストするのではなく、応答に「失敗したログイン」が含まれていることをテストします。モデルインスタンスを手動で作成せずにステップを機能させるのは難しい場合もありますが、ストーリーがモデル、ビュー、またはコントローラーを直接参照しない方がよいと思います。
私が見ているように、ビュー、コントローラー、モデルの仕様は全体像の一部にすぎません。彼らは実装の言語を話し(「コントローラーアクションXはモデルZに対してYを実行する必要があります」)、アプリの個々の部分がそれぞれ正しいことを実行することをテストします。ストーリーは、ユーザーの言語を話し(「コメントを投稿すると、投稿したコメントが表示されるはずです」)、顧客の受け入れ基準を満たす方法でパーツが組み合わされていることをテストすることで、全体像を完成させます。
便利なワークフローは次のとおりです。
- 追加する必要のある機能を説明するストーリーシナリオを作成します。
- できるだけ早く、そのストーリーのステップを記述して、実行できるようにします(すべてのステップが失敗した場合でも)。
- そのストーリーに必要なものの仕様を書いてください(モデルから始めるのが良いかもしれません)。
- その仕様に合格するコードを記述します。
- ストーリーが通過するまで、より多くの仕様とコードを記述します。
そうすれば、ストーリーはあなたのスペックがテストする必要があるものをあなたに導くことができます。
編集:これはストーリーとスペックの関係に触れる良い記事です。