我希望能够在任何规范文件中的任何位置拨打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>
答案 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
的末尾