2

我希望能够在任何规范文件中的任何时候login_as_admin调用。login_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>
4

1 回答 1

3

我相信您要么需要在规范助手中创建这些功能,要么在您的测试中包含这些模块。

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

module RspecMacros 
  extend ActiveSupport::Concern

  included do
    def login_as_customer
      ... 
    end
  end
end

require 'rspec_macros'
describe MyCoolTest do    
  include RspecMacros
end

您可能会发现让它们在规范助手中起作用更容易。您可以添加:

def login_as_customer
   ....
end

到 spec_helper.rb 的末尾

于 2012-12-19T03:51:01.520 回答