7

新しいアプリケーションの場合、BDDで手を出し始めたいのですが、RSpecを使用するかThoughtbotのShouldaを使用するかを決定しようとしています。私はShouldaが使用するマクロが好きで、Ruby / Railsがテストを行う方法を再発明しているようには見えないが、単にアドオンを提供しているという事実が好きです。一方、マクロは、テスト対象を明示するのではなく、少し「魔法」のように見えます(ただし、「xxxがないと無効になるはずです」という2つのライナーを1ダース書くのは面倒だと私は知っています。モデル)。正直なところ、モデルの仕様やテストを書くのは簡単で退屈なほど簡単ですが、何をテストするのか、どのように書くのかが正確にわからないため、コントローラーの仕様やテストを書くのはめちゃくちゃ難しいと思います。

モックとスタブは誤った仮定を与えると思うので(必要なデータがあると思うか、メソッドXが呼び出されたふりをするように指示できるため)、RSpecが重くなることを知っています。それらの両方の使用。私はRSPecが作成するドキュメントが好きですが、クライアントに提供するのではなく、販売用のアプリケーションを作成しているので、きれいなドキュメントはそれほど役に立ちません。私はキュウリが好きですが、それはやり過ぎのようです(そして、はい、それはShouldaで使用できることを知っています)。

この時点で、RailsコミュニティはRSpecまたはShouldaを支持していますか?

4

8 に答える 8

3

モックとスタブ(および偽物、ダブルなど)について-TDDを使用して、または事後にユニットレベルでテストする場合、要点は、スタブを使用して、必要なデータがあると見なすように指示することですそして、実際のオブジェクトのテストを作成して、実際にそのデータが生成されることを確認します。目的は、テスト対象のクラスの内部動作をチェックすることであり、そのアップストリーム接続が適切に動作していることではありません。これはユニットレベルです。統合テストまたは機能/ストーリー/受け入れテスト(または任意の高レベルのテスト名)でエンドツーエンドの動作をテストします

私の考えでは、モックオブジェクトはダウンストリームに関するものです。テスト対象のクラスが適切な呼び出しを行ったことを確認する必要があります。実際に何かが発生することを心配する必要はありません。適切なメソッドが適切な引数で呼び出されただけです。 。モックはそのために本当に良いです。Rspecには独自のモックフレームワークがありますが、MochaFlexMockも広く使用されています。

ところで、ここでは命名法について多くの議論/説明/討論/炎の争いがありました。マーティン・ファウラー(この主題について発音するのにほとんどの人よりも資格があります)は、それを明確にするために独創的なブログ投稿を書きました、そしてそれは理にかなっていると思います。いくつかの例を含む別の記事があります。

于 2009-10-19T13:37:02.883 に答える
2

Railsコミュニティは、RSpecとShouldaの両方を支持しています。開発者によって異なります。あなたがShouldaを好むなら、それを使ってください。
RSpecが必要な場合は、それを使用してください;)

どちらも同じような目標を持つ異なるライブラリです。すべての開発者がそれに賛成または反対しなければならないという意味ではありません。それはあなたがそれらのどちらかを使うことができるということを意味するだけです。

あなたの好み(そしてあなたが一緒に働いている他の開発者)に応じてあなたの選択をするのはあなた次第です。

于 2009-10-19T12:43:21.470 に答える
1

RSpecでshouldaマクロを使用できます。確かにそれほど一般的ではありませんが、優れたオプションです:http: //robots.thoughtbot.com/post/159805987/speculating-with-shoulda

しかし、レーダーが言うように、最終的にはそれらを異なるライブラリで試して決定する必要があります。

于 2009-10-20T21:46:53.063 に答える
1

RSpecでShouldaマッチャーを使用しています。両方の長所:RSpecの背後にある大きなコミュニティ、迅速な開発、Shouldaマッチャーによる多くのカバレッジ。

于 2010-03-29T02:09:53.000 に答える
0

ショルダーウォッチャー:758。

RSpecウォッチャー:1279。

最終的には、どちらを好むかを決めるのはあなた次第です。

于 2009-10-20T06:12:48.613 に答える
0

私の知る限り、BDDについて言及しているので、キュウリとRSpecの間にはより自然な一致があるようです。shouldaで私が最も気に入っているのは、その検証であるマクロです。RSpecでこれを解決するには、次の2つのオプションがあります。

  1. RSpecのshouldaマクロを使用してください。これは素晴らしいオプションです。
  2. rspec-validations-expectationsプラグインを使用します。これは小さくてほとんど知られていませんが、それだけで修正されます(ActiveRecord検証のテストが簡単です)。

どのライブラリが最も自然に感じられるか(テストの表現方法)を確実に選択する必要があります。私にとっては、前述のオプションを使用すると、shouldaオプションを(少なくともそれ自体で)破棄する方が簡単で、rspecとcucumberを選択しました。

于 2010-01-08T09:44:41.533 に答える
0

私の現在のテストツールのスタックは次のとおりです。

  • 検収試験用ステーキ
  • ドライバーを使用したブラウザーシミュレーション用のCapybara:Selenium&Akephalos
  • スタブの機械工
  • ユニットテスト用のRspec
于 2011-01-01T01:50:17.073 に答える
0

世界中の多くのRails開発者がRSpecを使用しており、そのうちのいくつかはShouldaを使用しています。Railsのリード開発者であるDHHは、 Test::UnitMinitestを好みます。ThoughbotShouldaは、Test :: Unit(そしてもちろんMinitest)とRSpecの両方に基づいています。

最終的に、Rails Hotlineのボランティアとして、RSpecからより多くのコミュニティサポートを得ることができ、特にRSpecを改善するための追加の宝石がたくさんあります。そうは言っても、MinitestとTest::UniteはRubyの中核です。

[意見]ソフトウェアが「動作フロー」を必要とする場合はRSpecを使用し、純粋なユニット機能が必要な場合はMinitestを使用する傾向があります(主にMinitestのベンチマークライブラリは非常に単純であるため)。

于 2011-11-26T05:08:15.323 に答える