2011-09-15 15 views
1

私はRuby on Rails 3.0.10を使用しており、できるだけ早くversioni 3.1に切り替える予定です。新しいRoRバージョンでは、自分のアプリケーションに自動テストを追加することも予定しています。Ruby on Railsアプリケーションをテストするにはどうすればよいですか?

  1. 私のアプリケーションをテストするために何をアドバイスしますか?
  2. 読んだり読んだり読んだりするべきことはありますか?
  3. RoR 3.0.10のテストを書き始めると、それらはRoR 3.1で利用可能で互換性がありますか?いくつかの単語で

は、私はすべての私は、と(jQueryの-JavaScriptコードをテストするためにも)私のアプリケーションを改善するために使用「しなければならない」必要がありますすることができテストについて知っていただきたいと思います。

答えて

1
  1. 使用Rspec 2
  2. 使用Capybara
  3. 使用Spork
  4. 使用Guard

ガード+先割れスプーン(+ RSPEC +カピバラ)=自動テスト。

キュウリはおすすめしません。誰もがキュウリを愛していますが、それは価値があるよりもはるかに多くの仕事です。 the new acceptance testing feature(これは別の宝石だった、今はrspecに含まれている)とRspec + Capybaraで簡単にできることの上にある正規表現レイヤーです。あなたはモデルを概念化しているとRSpecのモデルのテストの記述を書き、

  1. :あなたのアプリを構築すると

    、私はこれをお勧めします。ものはit "should save a :start_date"のようなものです。まず、属性のテストを書くことでモデルを構築してください(start_dateの値が受け入れられ、無効な値の扱い方など)。次に、必要に応じてモデル間で統合テストを作成します。彼らはモデルテストではなく、ユニットテスト。モデル属性のテストを書くときは、単体テスト(独立したクラステスト)です。モデル間の機能をテストしているとき(私がuser.posts.create(:title => "My first blog post")をしたとき、そのユーザーの投稿が作成されると思います)、それらは私の意見では「統合」テストです。 Rspecでは、これらは「モデル」テストです。

  2. あなたのモデルのいくつかの基礎が得られたら、ビューテストを書く。ビューテストでアサーションを実装するには、Spork、Guard、およびCapybaraの設定が必要です。そして、あなたはHamlを書いてからコントローラコードを書かなければなりません...結局、あなたはビューテストを合格させるためのコードを書くでしょう。コントローラとビューの両方のテストを行うというアイデアは過度のものです。 Rspec + Capybaraの受け入れテストでは、すべてをspec/acceptanceディレクトリにラップすることができます。あなたに時間と多くの思いを救います。最後にあなたのモデルを徹底的にテストし、リクエスト/ htmlを徹底的にテストします。
  3. アプリが大きくなるにつれて、テストには時間がかかります。すべてのテストを実行するのに簡単に10〜20分かかります!それはすぐにあなたを消すでしょう。特に、あなたが望むのは、再押し込む前にタイプミスを修正することだけです。これを避けるには、シードデータ(各テストの間に再作成する必要のないデータ)を使用する巧妙な方法、または擬似データを使用する巧妙な方法、およびSporkのセットアップを理解してください。テスト実行の間にRailsサーバーを再ロードする必要がないため、時間がかかりません。また、Guard + Sporkでは、オートテストは不要です(オートテストは古くなっています)。
  4. さらに進歩したい場合は、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。

0

まず、コードの前にテストを書く必要があります。

私はあなたのアプリケーションをテストでカバーし、次にあなたのケースではRails 3.1に切り替えることをお勧めします。

rspeccucumberを一緒に使用することをお勧めします。 これは、TDD(rspec)およびBDD(キュウリ)を試験する2つの異なるアプローチである。

+2

私はrspecも使用していますが、実際のコードを書く前に(テスト駆動開発に続いて)書かれていなければなりません。前者を行うのが最も簡単ですが、後のテストは全くテストをしない方が良いです。 –

+0

@Benjamin Kreegerが間違っている点は、あなたが正しいテストを書いたことを確信できないからです。あなたがTDDリンクをたどった場合、あなたはそれがどのようにすべきかを見るでしょう。あなたの方法はTDDではありません – antonversal

+2

私は本当にTDDに従うこととそうしないことの違いを指摘していました。テスト≠TDDを書く。 –

2

自動テストではどういう意味ですか?

ユニット/機能/統合テストの場合は、Rails 3.1にアップグレードする前にそれらのテストを実行する必要があります。彼らは、アップグレード中にどこが壊れているかを見つけるのに非常に役立ちます。そして、それらがすべて合格すると、あなたのアプリケーションが再び働くという確かな信頼を得ることができます。

自動テストでは、UIテスト(これは私が解釈するもの)のような、より高いレベルのものを意味する場合は、WatirまたはSeleniumのいずれかをお勧めします。そのようなテストはまだ機能していて、基本的な実装(Rails 3.0.10または3.1)に影響されません。アプリがまだ動作している限り、それらのテストはまだ機能します。

関連する問題