我有一些幫助類存儲在我的spec/support
目錄下,我重複使用了許多測試。例如,foo_helper.rb
在RSpec 3的輔助類中使用存根時NoMethodError - 但不是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
已經升級到3.1的RSpec工作得很好,我看到下面的折舊警告:
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 CH,進而導致我的測試中失敗,出現以下錯誤:
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
是?
感謝您的幫助,但沒有我沒有明確地配置它使用「應該」的語法 - 我不認爲!)我使用由生成的香草'spec_helper.rb'和'rails_helper.rb'運行'rails generate rspec:install' ... – rwb 2014-10-20 14:46:38