根据devise的wiki,我应该能够在我的控制器测试中使用login_user帮助方法。因此,在spec目录下我有以下内容:
#spec_helper.rb
...
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
config.extend ControllerMacros, :type => :controller
...
并且
#support/controller_macros.rb
module ControllerMacros
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
@user = Factory.create(:user)
sign_in @user
end
end
end
然而调用这个辅助函数没有起作用:
#requests/some_spec.rb
require 'spec_helper'
describe "GET /guides/edit" do
login_user
end
有人能指出我的错误所在吗?测试套件工作良好,除了这个问题。我得到一个未定义的本地变量或方法消息,所以我猜测该模块没有被包含。
Rails 3.0.7 rspec 2.6.0 devise 1.3.4
log_in
/login_user
。 - Dogbert