我尝试测试设计用户身份验证,我根据示例完成了所有问题,但代码仍无效。
规格/支持/设计/ devise_support.rb
module ValidUserRequestHelper
def sign_in_as_a_valid_user
@user ||= Fabricate(:simple_user)
post_via_redirect user_session_path, 'user[email]' => @user.email, 'user[password]' => @user.password
end
end
RSpec.configure do |config|
config.include ValidUserRequestHelper, :type => :request
end
规格/ spec_helper.rb
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
然而,当我运行测试时,它在调用`sign_in_as_a_valid_user'时失败
undefined local variable or method `sign_in_as_a_valid_user' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xc57a0c4>
我不知道如何调试它。
测试代码是
require 'spec_helper'
describe User do
before do
sign_in_as_a_valid_user
end
...
答案 0 :(得分:3)
在rspec配置中写这个
RSpec.configure do |config|
config.include ValidUserRequestHelper, :type => :request
end
你告诉rspec只包含请求规范的帮助器。这些通常位于spec/request
。从您的规范示例中得出describe User
,我假设您正在编写模型规范,通常位于spec/model
。因此,在运行规范时,rspec将不包含该规范!
如果您删除:type => :request
,它将随处可见。请记住,这种限制通常有充分的理由。例如,只能在虚假浏览器中使用的帮助程序,就像在请求规范中一样。