Rspec找不到自定义模块

时间:2013-10-08 20:47:40

标签: ruby-on-rails rspec

我尝试测试设计用户身份验证,我根据示例完成了所有问题,但代码仍无效。

规格/支持/设计/ 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

...

1 个答案:

答案 0 :(得分:3)

在rspec配置中写这个

RSpec.configure do |config|
  config.include ValidUserRequestHelper, :type => :request
end

你告诉rspec只包含请求规范的帮助器。这些通常位于spec/request。从您的规范示例中得出describe User,我假设您正在编写模型规范,通常位于spec/model。因此,在运行规范时,rspec将不包含该规范!

如果您删除:type => :request,它将随处可见。请记住,这种限制通常有充分的理由。例如,只能在虚假浏览器中使用的帮助程序,就像在请求规范中一样。