代码之家  ›  专栏  ›  技术社区  ›  Igor Martins

rspec测试,登录设备只工作一次

  •  1
  • Igor Martins  · 技术社区  · 7 年前

    我正试着用desve和rspec测试一些观点。在这个测试中,第一个通过了。第二个是重定向到登录页。

    只是在第一次测试中登录。 如果我添加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
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Rodrigo    7 年前

    before(:all) 只会跑一次。这就是为什么只有第一次考试通过。

    使用 before(:each) 或者只是 before do

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

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