我似乎无法让sign_in工作,有人能看到我出错的地方吗?
require 'spec_helper'
describe CustomersController do
before(:each) do
@user = create(:user)
sign_in @user
end
describe 'GET /customers' do
it 'should be loaded successfully' do
visit customers_path
page.should have_content 'Customers'
end
end
end
和工厂
FactoryGirl.define do
factory :user do
sequence(:email) { |n| "test{n}@test.com"}
password "testpass"
password_confirmation { |u| u.password }
account
end
factory :account do
name "Test Account"
end
end
测试失败,并显示您需要登录的内容。这表明sign_in @user无法正常工作?
故障:
1)CustomersController GET / customers应该成功加载 失败/错误:page.should has_content'Customers' 预计将在“切换导航主页套餐和价格功能免费试用”中找到文本“客户”联系我们登录请签名 in×您需要先登录或注册才能继续。记住账号 注册忘记密码?关于我们我们的使命使用条款隐私 策略开发人员加入Team API SERVICES现场安装 链接OpenWeigh主页包装信息价格文档登录TALK TO 美国Twitter Facebook YouTube GitHub向我们发送电子邮件©2014 OpenWeigh 版权所有。 OpenWeigh是IGPython集团的一部分“ #./spec/controllers/customers_controller_spec.rb:14:in块中的“块(3级)”
完成0.72874秒1例,1次失败
答案 0 :(得分:0)
因为sign_in
是一个Devise方法,所以这个答案假定你使用Devise进行用户身份验证。
Devise建立在Warden之上。通过包含Warden的测试助手方法,您可以访问login_as
,其用途相同。尝试在规范中添加以下内容:
include Warden::Test::Helper
Warden.test_mode!
before(:each) do
@user = FactoryGirl.create(:user)
login_as(@user)
end
在Devise的存储库文档中进一步阅读:How To Test with Capybara。
使用Rails 4.1,RSpec 2.14和Devise 3.2进行测试。