Ruby on Rails で TDD を始めるにはどうすればいいですか? [closed] 質問する

Ruby on Rails で TDD を始めるにはどうすればいいですか? [closed] 質問する

私はその概念についてはよく知っています (大学でテストの授業を受けた) が、"本物の" TDD プロジェクトに取り組んだことがないので、実際にどのように使用すればよいのかまだよくわかりません。

私は Ruby on Rails (おそらく 2.3 を使用) を使用してプロジェクトの開発を開始しようとしています。このアプリケーションは、データ、ユーザー、およびいくつかのファイルの管理に使用されます。最初はそれほど複雑ではありませんが、今後 6 か月で大幅に拡張される可能性があるため、今が TDD をさらに進めるのに適切な時期だと感じています。

基本的なやり方はわかっていますが、まだいくつかのヒントやアドバイスが必要です。

  • Ruby on Rails TDD 101 のどの記事を読むべきでしょうか?

  • 何をテストする必要がありますか?

  • どの gem/プラグインを使用すればよいですか?

  • 使用すべきかrspec? 他に何かありますか?

  • すべてのテスト クラスを取得したら、それらをどのようにデプロイすればよいですか? (例: 継続的インテグレーション)

  • TDD は実際どれくらい時間がかかりますか?

  • これについては本を読む必要がありますか、それとも実際に触ってみてオンライン チュートリアルを読むだけですべて理解できますか? 本を読む必要がある場合、どの本ですか?


私は例を使って学習するのが好きなので、この問題を解決するために TDD アプローチをどのように採用すればよいか教えていただけませんか。

会社があります。連絡先があります。連絡先は 1 つの会社にリンクできます。会社は複数の連絡先を持つことができます。連絡先、会社を作成し、連絡先を会社にリンクする方法を作成したいと考えています。

回答にこの例を使用する必要はありませんが、役に立つと思います :)

ベストアンサー1

Ruby on Rails TDD 101 のどの記事を読むべきでしょうか?

まず始めにRailsアプリケーションのテストガイド

またレールキャストさまざまなテスト ツールの使用方法に関する優れたスクリーンキャストがいくつかあります。

何をテストする必要がありますか?

まず、テストが簡単なモデルから始めます。簡単なルールは、テストですべての if ステートメントをカバーする必要があるということです。

メソッドの目的(期待どおりに機能していることを確認するため)とすべてのエッジ ケースをテストする必要があります。

また、過剰にテストしすぎないように注意してください。

どの gem/プラグインを使用すればよいですか? rspec を使用する必要がありますか? 他に何かありますか?

始めるときは、Test Unit. 使用することができますrspecまたはcucumber基本を理解したら。

Autotest真のテスト駆動を実現したい場合、これは便利なツールです。ただし、必須ではなく、「あれば便利」です。

すべてのテストクラスを取得したら、それらをどのようにデプロイすればよいですか?

質問についてはよくわかりません。通常はテストをデプロイしません。すべてのテスト クラスができたら、単に「rake test」と入力してすべてのテストを実行します。

TDD は実際どれくらい時間がかかりますか?

本当に時間の節約になります。迷路パズルが好きなら、終わりから始まりまで進むと、ほとんどの場合、解くのが簡単になることをご存じでしょう。TDD でも同じです。テスト駆動がなければ、常に「次に何をすべきか」を考えることになります。テスト駆動では、テストが次に何をすべきかを教えてくれます (ロジックがなければ壊れるので、壊れた部分を修正するだけで済みます)。また、バグが少なくなるため、長期的には多くの時間を節約できます。

これについては本を読む必要がありますか、それとも実際に触ってみてオンライン チュートリアルを読むだけですべて理解できますか? 本を読む必要がある場合、どの本ですか?

本は必要ありません。何かを学ぶ最も効率的な方法は、とにかくやってみることです。疑問や問題に遭遇したら、本やオンライン リソースに戻ってください。これもアジャイルです。

この例では、テストが必要な項目は次のとおりです: 連絡先は 1 つの会社にリンクできます。会社は複数の連絡先を持つことができます。連絡先を作成する方法を作成します。連絡先を会社にリンクします。

class CompanyTest <Test::Unit
    def test_relationship # test associations/relationships
        c = companies(:some_company)
        assert_equal [a list of contacts], c.contacts # make sure a company can have multiple contacts
    end
end

class ContactTest<Test::Unit
   def  test_relationships
        c = contact(:some_contact)
        assert_equal some_company, c.company # make sure the contact link to 1 company
   end

   def  test_create/add
        # test create contacts, here you need to make sure the contact is created correctly, and linked to company correctly
   end
end

おすすめ記事