使用登录设计的Rspec测试只工作一次

问题描述 投票:1回答:1

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

login_as只是在第一次测试中工作。如果我添加3个测试,则最后一个失败,前两个测试通过。如果我将: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
ruby-on-rails testing rspec devise
1个回答
0
投票

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

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

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

before do
  user = FactoryBot.create(:user)
  login_as(user, :scope => :user)
end
© www.soinside.com 2019 - 2024. All rights reserved.