2

任意のスペック ファイルの任意の時点でlogin_as_adminandを呼び出せるようにしたいと考えています。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 に答える