У меня есть ряд вспомогательных классов, хранящихся в моем каталоге spec/support
, которые я повторно использую в нескольких тестах. Например, foo_helper.rb
NoMethodError при использовании заглушки в классе-помощнике в RSpec 3 - но не RSpec 2?
class FooHelper
def self.stub_thing
Foo.any_instance.stub(:thing)
Foo.any_instance.stub(:thing=)
end
end
Foo
используется в ряде тестов, так что я просто require ../spec/support/foo_helper.rb
в каждой спецификации я хотел, чтобы иметь возможность использовать FooHelper.stub_thing
. Это все прекрасно работали в RSpec 2.x
После модернизированной к RSpec 3.1, я вижу следующее предупреждение: амортизационные
Using `any_instance` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` instead. Called from app/spec/support/foo_helper.rb:4:in `stub_thing'.
Таким образом, добавив rspec-actvemodel-mocks
к моему Gemfile:
gem 'rspec-rails', '~> 3.1'
group :development, :test do
gem 'rspec-activemodel-mocks', '~> 1.0'
end
И следующий the documentation, я изменил мой код:
class FooHelper
def self.stub_thing
allow_any_instance_of(Foo).to receive(:thing)
allow_any_instance_of(Foo).to receive(:thing=)
end
end
Whi ч, затем вызывает мои тесты на неудачу со следующей ошибкой:
Failure/Error: FooHelper.stub_thing
NoMethodError:
undefined method `allow_any_instance_of' for FooHelper:Class
# ./spec/support/foo_helper.rb:4:in `stub_amount'
# ./spec/models/parent_model.rb:33:in `block (2 levels) in <top (required)>'
Как allow_any_instance_of
не может быть определена, когда any_instance
и stub
являются ?!
Спасибо за помощь, но нет я явно не настроил ее использовать синтаксис 'should' - я не думаю!) Я использую vanilla' spec_helper.rb' и 'rails_helper.rb', сгенерированные Выполняется запуск rspec rspec: install' ... – rwb