我正在使用 Rspec、FactoryGirl 和 Spork 进行测试。有两件事我不太清楚,首先是我的 factory.rb 文件的位置。目前我有它位于
spec/support/factories.rb
它看起来像这样
FactoryGirl.define do
factory :user do
email "example@yahoo.com"
password "password"
password_confirmation "password"
confirmed_at Time.now
end
end
在我的 spec_helper 我有
config.include FactoryGirl::Syntax::Methods
其次,我想在开始对控制器进行测试之前登录用户,这个特定的控制器有一个前置过滤器:authenticate_user!
我正在使用设计进行身份验证,因此添加了
config.include Devise::TestHelpers, :type => :controller
阅读设计文档,您可以添加一个 controller_macros.rb 并指定这样的方法来使用
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = FactoryGirl.create(:user)
user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the confirmable module
sign_in user
end
end
所以我也将它添加到我的 spec_helper
config.include ControllerMacros, :type => :controller
因此,当我在控制器测试之前添加 login_user 时,我得到未定义的方法 login_user。我在这里使用两个工具来做同样的事情吗?我真的需要设计方法还是可以用 factoryGirl 来完成。如果是这样,我如何在测试控制器之前设置登录过程?