1

我尝试测试设计用户身份验证,我已经根据示例完成了所有问题,但是代码仍然无法正常工作。

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

...
4

1 回答 1

3

当您在 rspec 配置中编写此内容时

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

你告诉 rspec 只为请求规范包含这个助手。这些通常位于spec/request. 根据您的规范示例describe User,我假设您正在编写模型规范,通常位于spec/model. 所以在运行规范时,rspec 不会将它包含在该规范中!

如果您只是删除:type => :request它,它将被包含在任何地方。请记住,这种限制通常是有充分理由的。例如,仅适用于假浏览器的助手,就像在请求规范中所做的那样。

于 2013-10-09T07:30:36.620 回答