0

テストを始めたばかりで、ログインなどの多くの機能を再利用できるように、RSpec 仕様の手順をどのように記述すればよいか考えています。

4

1 に答える 1

3

通常、テストは互いに分離する必要があります。多くのテストで同じことを行う必要がある場合、それはそれらがいくつかの作業を複製していることを示唆しています。ただし、それが避けられない場合もあります。たとえば、認証されたものをテストするには、ログインしたユーザーを手元に用意する必要があります。

特にRubyテストの場合、必要な特定の問題を解決するために誰かがすでにライブラリを作成している可能性が非常に高くなります。たとえば、操作を適切にテストする前に、いくつかのデータが存在する必要があることは非常に一般的です。そのため、factory_girlが存在します。

ユーザーが実際に行うすべてのステップをウォークスルーする動作駆動型統合テストを実行する場合は、代わりにCucumberを使用する必要があります。

さまざまな場所でメソッドを再利用する場合は、共有コードを次の場所に配置できますspec/support

# spec/support/consumable_helper.rb
module ConsumableHelper
  def consume(consumable)
    calories = consumable.om_nom_nom
  end
end

RSpec.configure do |config|
  config.include ConsumableHelper
end

複数の領域で同じ動作をテストする場合は、とを使用shared_examples_forit_behaves_likeます。

shared_examples_for "a Consumable" do
  it "should be delicious" do
    subject.should be_delicious
  end

  it "should provide nutrition" do
    subject.calories.should > 0
  end
end

describe Fruit do
  it_behaves_like "a Consumable"
end

describe Meat do
  it_behaves_like "a Consumable"
end
于 2011-07-09T14:52:46.510 に答える