登录设计的Rspec测试仅工作一次

时间:2018-09-24 13:47:49

标签: ruby-on-rails testing rspec devise

我正在尝试使用devise和rspec测试一些视图。在此测试中,第一个通过。第二个是重定向到sign_in页面。

login_as只能在第一个测试中使用。 如果我添加3个测试,则最后一个失败,而前2个通过。 如果我将:all更改为:each,则第一个失败,第二个通过

require 'rails_helper'

RSpec.describe StoresController, type: :controller do
    context "with valid params" do
        user = FactoryBot.build(:user)
        before(:all) do
            login_as(user, :scope => :user)
        end

        it "renders the index template" do
            get :index
            expect(response).to render_template("index")
        end

        it "creates a new store" do
            get :new
            expect(response).to render_template("new")
        end

    end
end

1 个答案:

答案 0 :(得分:0)

before(:all)将只运行一次。这就是为什么只有第一个测试通过。

使用before(:each)或简单地使用before do

此外,应为每个测试创建用户变量,这意味着应在before块内声明该变量:

before do
  user = FactoryBot.create(:user)
  login_as(user, :scope => :user)
end