使用登录设计的Rspec测试只工作一次
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用登录设计的Rspec测试只工作一次相关的知识,希望对你有一定的参考价值。
我正在尝试使用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
答案
before(:all)
只运行一次。这就是为什么只有第一次测试通过。
使用before(:each)
或简单地使用before do
此外,应为每个测试创建用户变量,这意味着它应该在before块中声明:
before do
user = FactoryBot.create(:user)
login_as(user, :scope => :user)
end
以上是关于使用登录设计的Rspec测试只工作一次的主要内容,如果未能解决你的问题,请参考以下文章
使用 RSpec 为带有 Rails 的 Redis 编写测试
如何使用 omniauth / oauth 对每秒登录次数进行基准测试? (红宝石+rspec)