2011-02-06 4 views
2

私は毎日Railsに関する新しいことを学んでいます(2つの学習を始め、3つの概念に移行しています)。 Railsのプロジェクトとして、私はブラウザゲームをコーディングしています。これまでは、データベースにデータをロードするためのフィクスチャを使用していましたが、必要なときに毎回db、loadtureなどを再作成するカスタムタスクを作成しました。私は、武器、ボーナスなどで私の怪物を簡単に定義することができるので、私はこのアプローチが好きだと言わなければならない。Rails RSpec、このような場合にはどのように適用されますか?

しかし、私は人々がその種のもののRSpecのようなテスト環境を使用することを知っています。 RSpecは適切な動作を定義するための言語として使用されていますが、どのように役立つのかはっきりと分かりません。しかし、私は正しいやり方をするのが好きなので、私はそれについて理解して読むことがずっとあると確信しています。

したがって、私はRSpecがどのように役立つかについての確かな例を尋ねたいと思います。たとえば、ユーザーが同盟を作成したとします。私のコードでは、私はこの同盟を作成するお金があるかどうか、このユーザーと既に同盟関係があるかどうか、その名前との同盟が存在するかどうかをチェックしています。ここでRSpecはどこに適合しますか?すてきな使用例は何でしょうか?

さらに、RSpecを使用して別の方法で実装されていますか?

私はすでに、Railsには多くの優れたプログラマの便利さがあり、これも収穫したいと思っています。しかし、私はまだRSpecについて無知です。そういうわけで、私はいくつかの有用な洞察に感謝します。ありがとうございました:)

答えて

2

Rspecはテストフレームワークです。これにより、コードが実際に動作していることを確認する自動コードを書くことができます。それは、テストコードの道だ -

 
describe Alliance do 
    it 'should not have the same name as another alliance' do 
    first = Alliance.create :name => "Test Name" 
    second = Alliance.build :name => "Test Name" 

    second.should_not be_valid 
    end 
end 
このコードは、その後、どの2社の提携は、同じ名前を持つことはできませんことを確認します

は:たとえば、あなたは、どの2つの同盟が同じ名前を持っていないことを確認するテストを書くことができます実際に働いています。

フィクスチャ、ファクトリ、モック、およびスタブは、テストで使用できるすべての一時的なデータを作成する方法です。 RSpecはFixturesを使うことができますが、それを必要としません。テスト・データをデータベースにロードする場合は、テストを実行するためのニーズに最も適した方法でテスト・データをロードできます。

いくつかの他のテストフレームワークは、Cucumber、TestUnit、MiniTestおよびShouldaです。あなたのコードのテストを書くためには既に1つを使用しているはずです。また、あなたのニーズに最も適したフレームワークを見つけるために、他のものを読むこともできます。

+0

こんにちは、お返事はありがとうございました:)私はすでに、同盟名の一意性を検証しています。そのような場合、私はそのようなテストを使う必要は本当にありません。私はそれがいくつかのシナリオでは便利かもしれないと思うが、私は本当にその時に何かを見ることができない。 – Spyros

+0

当面の検証は必要ないかもしれませんし、Railsが実際に動作しているかどうかのテストは通常​​必要ではありません。これは単なるテストケースの例です。つまり、他の開発者と作業している場合、誰もテストなしでコードを変更しないことをどのように確認できますか?また、テストがより便利になる複雑なケースもあります。たとえば、ユーザーが同盟に2度参加できないことを確認するなどです。 –

+0

Railsチーム(例えば)が検証のために独自のテストケースを保持しているという裏づけがあるのは、経験則として「他の人が書いたコードをテストしないでください。 テストはコードの動作を確認するためのものではなく、どのように*動作するべきかを伝えるためのものです。 GitHubのRubyプロジェクトでは、さまざまなRSpecテストを参照するだけで大​​丈夫です。コードベースを掘り起こすのは簡単です。 – Robbie

関連する問題