Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 RSpec::Mocks::Mock:类的未定义方法“i18n_scope”_Ruby On Rails 4_Internationalization_Rspec Rails_Rspec2_Rspec Mocks - Fatal编程技术网

Ruby on rails 4 RSpec::Mocks::Mock:类的未定义方法“i18n_scope”

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) } 我在第

我最近升级到了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) }
我在第三行发现了错误


不确定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)