RSpecの共有の例に定義された変数を使用する際に問題があります。私のテストは次のとおりです:RSpecは共有の例で定義された変数を使用できません
RSpec.shared_examples "check user logged in" do |method, action, params|
it "redirects to the sign in page if the user is not logged in" do
send(method, action, params)
expect(response).to redirect_to(signin_url)
end
end
RSpec.describe UsersController, type: :controller do
describe "GET #show" do
let(:user) { FactoryGirl.create(:user) }
let!(:show_params) do
return { id: user.id }
end
context "navigation" do
include_examples "check user logged in", :get, :show, show_params
end
end
end
このテストでは、アクションが実行される前にログインする必要があることを確認しています。
がmethod_missing ':私は、次のエラーメッセージを受信していshow_paramsが
は私がshow_params
にアクセスできるように変更する必要がある例グループでは使用できませんか?私はinclude_examples
の代わりにit_behaves_like
を使ってみました。私はまた、context "navigation"
ブロックを無駄に削除しようとしました。複数のコントローラーとアクションでこのチェックを実行する必要があるので、コードを再利用する正しい方法が共有されているようです。
これは美しく機能しました。どうもありがとうございました!私は別のファイル( 'spec/controllers/shared_examples/authorized_action.rb')に共有サンプルを置いて、' spec/rails_helper.rb'のディレクトリを必要とし、それをあなたの提案どおりに使いました! – Alexander