テストを始めたばかりで、ログインなどの多くの機能を再利用できるように、RSpec 仕様の手順をどのように記述すればよいか考えています。
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_for
しit_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 に答える