RSpec with devise – 仅记录第一个测试

我正在尝试为用户必须使用设备登录的页面编写rspecfunction测试。

RSpec.feature "User sees items" do before(:context) do .. login_as(@user, :scope => :user) end after(:each) do Warden.test_reset! end it "sees 3 items" do create_items 1, 2 visit root_path expect(page).to have_css("#total", text: "3") end it "sees 7 items" do create_items 3, 4 visit root_path expect(page).to have_css("#total", text: "7") end end 

在我的rails_helperinclude Warden::Test::Helpers

但只有我的第一次测试值3用户登录。第二次测试有设计错误You need to sign in or sign up before continuing.page.body的测试中。

我怎么能保持记录? 或者我每次都要登录?

谢谢

使用before(:each) ,而不是before(:context)

 before(:each) do # <-- !!!! # .. login_as(@user, :scope => :user) end after(:each) do Warden.test_reset! end 

你的问题是before(:context)只运行一次 – 即在第一次测试运行之前,而after(:each)运行每次测试。

因此,在第一次测试运行后,您已退出并且未重新登录。