【发布时间】:2015-09-12 21:24:19
【问题描述】:
当我测试我的规范之一时,我继续收到此问题:
Failure/Error: visit "/"
UncaughtThrowError:
uncaught throw :warden
下面是各个部分的代码:
#_spec.rb
require "rails_helper"
RSpec.feature "Users can create a new discussion" do
before do
login_as(FactoryGirl.create(:user))
visit "/"
click_link "Discussions"
click_link "Start a discussion"
end
scenario "with valid attributes" do
click_button "Post"
end
end
#_factory.rb
FactoryGirl.define do
factory :user do
sequence(:email) { |n| "test#{n}@example.com" }
password "password"
sequence(:user_name) { |n| "User#{n}" }
first_name "Test"
last_name "User"
country "United States"
state "Nevada"
city "Las Vegas"
end
end
#rails_helper
config.include Warden::Test::Helpers, type: :feature
config.after(type: :feature) { Warden.test_reset! }
显然,测试在 _spec 文件中标记了访问行,但我不确定为什么。如果还有其他代码可以帮助我,请告诉我,谢谢!
更新
所以问题是因为我使用的是可确认的 Devise;但是,我不清楚如何通过测试确认用户。这是我可以放置在工厂或规范本身内的东西吗?我会认为规范本身?
【问题讨论】:
-
您使用设计吗?
login_as是什么? -
可能重复:stackoverflow.com/questions/9482739/…。如果你使用
Confirmable模块,你需要确认你的用户,否则Warden会报错。 -
Alex:我昨晚遇到了这个问题,但不确定这是否真的是问题所在,我如何通过测试确认用户。整个 Devise::TestHelpers 让我感到困惑。我刚刚验证过,这是可以确认的方面。我不明白如何在测试中确认用户。我可以在工厂内这样做还是必须在功能本身中提及?
标签: ruby-on-rails ruby-on-rails-4 testing rspec