Ruby on rails 4 RSpec::Mocks::Mock:类的未定义方法“i18n_scope”
我最近升级到了Rails 4。当我运行RSpec测试时,我得到了一个错误 这是我的规格:Ruby on rails 4 RSpec::Mocks::Mock:类的未定义方法“i18n_scope”,ruby-on-rails-4,internationalization,rspec-rails,rspec2,rspec-mocks,Ruby On Rails 4,Internationalization,Rspec Rails,Rspec2,Rspec Mocks,我最近升级到了Rails 4。当我运行RSpec测试时,我得到了一个错误 这是我的规格: 1 model = double(:model, errors: double(:errors, full_messages: [])) 2 transaction = double(:transaction) 3 transaction.stub(:update_attributes!) { raise ActiveRecord::RecordInvalid.new(model) } 我在第
1 model = double(:model, errors: double(:errors, full_messages: []))
2 transaction = double(:transaction)
3 transaction.stub(:update_attributes!) { raise ActiveRecord::RecordInvalid.new(model) }
我在第三行发现了错误
不确定RSpec::Mocks::Mock:类为什么要查找“i18n_scope”方法。但为了解决这个问题,我在“i18n_范围”上打了个小短号。然后它就工作了。这是不对的。double类是RSpec::Mocks::double。此类也不实现i18n_范围。你可以在这里看到我的答案:。至少对于RSpec 3.3+,我回答了您的问题并在这里提供了一个更干净的替代方案:
RSpec::Mocks::Mock.stub(:i18n_scope).and_return(:activerecord)
model = double(:model, errors: double(:errors, full_messages: []))
ActiveRecord::RecordInvalid.new(model)