- 使用Rspec 2
- 使用Capybara
- 使用Spork
- 使用Guard
ガード+先割れスプーン(+ RSPEC +カピバラ)=自動テスト。
キュウリはおすすめしません。誰もがキュウリを愛していますが、それは価値があるよりもはるかに多くの仕事です。 the new acceptance testing feature(これは別の宝石だった、今はrspecに含まれている)とRspec + Capybaraで簡単にできることの上にある正規表現レイヤーです。あなたはモデルを概念化しているとRSpecのモデルのテストの記述を書き、
- :あなたのアプリを構築すると
、私はこれをお勧めします。ものはit "should save a :start_date"
のようなものです。まず、属性のテストを書くことでモデルを構築してください(start_date
の値が受け入れられ、無効な値の扱い方など)。次に、必要に応じてモデル間で統合テストを作成します。彼らはモデルテストではなく、ユニットテスト。モデル属性のテストを書くときは、単体テスト(独立したクラステスト)です。モデル間の機能をテストしているとき(私がuser.posts.create(:title => "My first blog post")
をしたとき、そのユーザーの投稿が作成されると思います)、それらは私の意見では「統合」テストです。 Rspecでは、これらは「モデル」テストです。
- あなたのモデルのいくつかの基礎が得られたら、ビューテストを書く。ビューテストでアサーションを実装するには、Spork、Guard、およびCapybaraの設定が必要です。そして、あなたはHamlを書いてからコントローラコードを書かなければなりません...結局、あなたはビューテストを合格させるためのコードを書くでしょう。コントローラとビューの両方のテストを行うというアイデアは過度のものです。 Rspec + Capybaraの受け入れテストでは、すべてを
spec/acceptance
ディレクトリにラップすることができます。あなたに時間と多くの思いを救います。最後にあなたのモデルを徹底的にテストし、リクエスト/ htmlを徹底的にテストします。
- アプリが大きくなるにつれて、テストには時間がかかります。すべてのテストを実行するのに簡単に10〜20分かかります!それはすぐにあなたを消すでしょう。特に、あなたが望むのは、再押し込む前にタイプミスを修正することだけです。これを避けるには、シードデータ(各テストの間に再作成する必要のないデータ)を使用する巧妙な方法、または擬似データを使用する巧妙な方法、およびSporkのセットアップを理解してください。テスト実行の間にRailsサーバーを再ロードする必要がないため、時間がかかりません。また、Guard + Sporkでは、オートテストは不要です(オートテストは古くなっています)。
- さらに進歩したい場合は、JavaScriptをテストすることができます。これはまだまったく新しい分野です。今のところ2つのアプローチがあります:1)Capybaraをjavascript対応のドライバで使用すること(セレンはこの記事のように実際に動作する唯一のものです)、または2)jasmineを使用します。あなたのアプリが「純粋にjavascript」アプリでない場合、私はこの1つを待っていました。 Javascriptのテストのために
、私は、(Parallelsのか、VMware Fusionのか、何を経由して)お使いのMacやWindows上で、あなたはRailsの+先割れスプーンテストサーバーに対してローカルにジャスミンのテストを実行することを可能にする建物some sort of node.js/websocket layerを考えているくらいですより良い方法+ JavaScriptのテストを行うには、本当に生産されているので、あなたはアプリ全体を取得するため。
これまでのところ、実用的なRailsアプリケーションを構築するために必要なのはこれだけです。それが助けてくれることを願って、Lance。
私はrspecも使用していますが、実際のコードを書く前に(テスト駆動開発に続いて)書かれていなければなりません。前者を行うのが最も簡単ですが、後のテストは全くテストをしない方が良いです。 –
@Benjamin Kreegerが間違っている点は、あなたが正しいテストを書いたことを確信できないからです。あなたがTDDリンクをたどった場合、あなたはそれがどのようにすべきかを見るでしょう。あなたの方法はTDDではありません – antonversal
私は本当にTDDに従うこととそうしないことの違いを指摘していました。テスト≠TDDを書く。 –