[解決済み] Ruby on RailsでTDDを始めるには?[クローズド]
質問
私はそのコンセプトについてよく知っていますが(大学でテストの授業を受けました)、quot;real" TDDプロジェクトに取り組んだことがないので、それらを実際にどう使うかはまだわかりません。
私は今、Ruby on Rails(おそらく2.3を使用)を使ったプロジェクトの開発を始めようとしています。このアプリケーションは、データ、ユーザー、およびいくつかのファイルを管理するために使用される予定です。最初はそれほど複雑ではありませんが、今後6ヶ月で大きくスケールする可能性があるので、これはTDDをより深く理解するのに適した時期だと感じています。
基本的なやり方はわかっているのですが、まだいくつかの指摘やアドバイスが必要です。
-
Ruby on RailsのTDD 101の記事は? を読めばいいのでしょうか?
-
何をテストする必要がありますか?
-
どのようなgem/pluginを使用すればよいですか?
-
を使用する必要があります。 リスペック ? 他の何か?
-
テスト用クラスをすべて作成したら、どのようにデプロイすればよいのでしょうか?(例: Continual Integration (継続的インテグレーション))
-
TDDは実際どのくらい時間がかかるのでしょうか?
-
それとも、オンラインチュートリアルを読んで、遊んでいるだけで全て理解できるのでしょうか?本を読む必要があるとしたら、どんな本ですか?
私は例で学ぶのが好きなので、この問題を解決するためにTDDアプローチでどうすればいいか、誰か教えてください。
<ブロッククオート私は会社を持っています。連絡先があります。A コンタクトは1社にリンクすることができます。A は、複数の連絡先を持つことができます。I を作成する方法を作りたい。 連絡先、会社、連絡先のリンク を企業に追加します。
この例を回答で使用する必要はありませんが、参考になると思います :)
どのように解決するのですか?
<ブロッククオートRuby on Rails TDD 101のどの記事を読むべきですか?
私は、まず Railsアプリケーションのテストガイド .
また レールキャスト には、さまざまなテストツールの使い方に関する素晴らしいスクリーンキャストがあります。
<ブロッククオート何をテストする必要があるのか?
テストしやすいので、モデルから始めます。簡単なルールは、テストの中ですべてのif文をカバーする必要があるということです。
メソッドの目的(期待通りに機能しているかどうか)だけでなく、すべてのエッジケースをテストする必要があります。
また、過剰なテストになってしまわないように注意しましょう。
<ブロッククオートどのようなgem/pluginを使用すればよいのでしょうか?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
関連
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] Paramが無いか、値が空である。ParameterMissing in ResultsController#update
-
[解決済み] bundle install --without production は何をするのですか?
-
[解決済み] RubyとRailsの "Date.today "フォーマット
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] Rubyで乱数を取得する方法
-
[解決済み] Ruby on RailsでJSON出力を "きれい "にフォーマットする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】なぜRuby on Railsは、http://localhost:3000 の代わりに http://0.0.0.0:3000 を使用するのですか?
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] RailsのRootディレクトリのパス?
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] bundle install --without production は何をするのですか?
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?