【发布时间】:2011-06-19 16:33:30
【问题描述】:
根据设计 wiki 中的this,我应该能够在我的控制器测试中使用 login_user 辅助方法。因此,我在规范目录中有以下内容:
#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
谁能指出我哪里出错了。测试套件从这里开始工作。我收到一个未定义的局部变量或方法消息,所以我猜该模块没有被包含在内。
导轨 3.0.7 rspec 2.6.0 设计 1.3.4
【问题讨论】:
-
这是您的 some_spec.rb 中的错字吗?
log_in/login_user -
你得到的回溯是什么?
-
嗨。已添加到问题的脚下。
-
等等——回溯是说它找不到你的 login_user 方法。我不知道“controller_macros.rb”是什么...但是尝试将其直接放入 spec_helper.rb 以查看 login_user 是否确实有效...然后弄清楚如何包含 ControllerMacros 以便它可以找到你的辅助方法。
标签: ruby-on-rails ruby-on-rails-3 rspec devise