1

Rails rspec/capybara/declarative_authorization を使用しています。多くの異なるユーザーで同じテストを実行する必要があります。

 describe "Revision in root folder" do
   before do
     with_user(@guest) do
       visit revisions_path
     end
   end
   it { should have_selector('div.alert.alert-error', text: auth_error_text) }
 end
...
 describe "Revision in root folder" do
   before do
     with_user(@user1) do
       visit revisions_path
     end
   end
   it { should have_selector('div.alert.alert-error', text: auth_error_text) }
 end

唯一のパラメーターはwith_userを呼び出すユーザーです。どうにかして記述ブロックを 1 つだけ使用し、ユーザーの配列を繰り返し処理して、テストを DRY に保つことはできますか? @guest と @user1 はbefore(:all)ブロックで作成されるため、仕様の解析時に使用できないことが重要です。

どんな助けでも大歓迎です。

4

4 に答える 4

0

私は同じ問題を抱えていましたが、次の方法で解決しました。

[:user_type_1, :user_type_2].each do |user_type|
   let(:user) { create(user_type) }
   before do
     with_user(user) do
       visit revisions_path
     end
   end
   it { should have_selector('div.alert.alert-error', text: auth_error_text) }
end
于 2017-02-24T09:41:04.497 に答える