为什么我的Rspec集成测试找不到我的模块?

时间:2012-12-19 03:40:17

标签: ruby-on-rails rspec

我希望能够在任何规范文件中的任何位置拨打login_as_adminlogin_as_customer

我有一个完整的集成规范目录:

/spec/features/area_spec.rb
/spec/features/assignment_spec.rb
/spec/features/etc…

每个都以:

开头
require 'spec_helper'
require 'rspec_macros'

我还有/spec/spec_help.rb,其中包括:

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require File.dirname(__FILE__) + "/rspec_macros"

我有/spec/rspec_macros.rb,其中包括:

module RspecMacros
  def login_as_admin
    etc…
  end
  def login_as_customer
    etc…
  end
end

那么,为什么我会在Rspec命令行中收到以下错误?

 Failure/Error: login_as_customer
 NameError:
   undefined local variable or method `login_as_customer' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2:0x007fd99f471f50>

1 个答案:

答案 0 :(得分:3)

我相信您需要在规范帮助程序中创建这些函数或在测试中包含模块。

要包含模块,您可以执行以下操作:

module RspecMacros 
  extend ActiveSupport::Concern

  included do
    def login_as_customer
      ... 
    end
  end
end

require 'rspec_macros'
describe MyCoolTest do    
  include RspecMacros
end

您可能会发现在spec helper中使它们更容易。你可以添加:

def login_as_customer
   ....
end

到spec_helper.rb

的末尾