未定义的方法`use_transactional_tests ='用于#<RSpec :: Core ::配置:0x007fccf515e338>(NoMethodError)

mon*_*ena 6 rspec ruby-on-rails-5

我正在测试新的Rails版本5.0.0.alpha和RSpec,3.1.7但我收到错误:

undefined method `use_transactional_tests=' for #<RSpec::Core::Configuration:0x007fccf515e338> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

rails_helper.rb我通常使用这一切,一切正常:

config.use_transactional_fixtures = true
Run Code Online (Sandbox Code Playgroud)

但我收到了这个警告:

DEPRECATION WARNING: use_transactional_fixtures= is deprecated and will be removed from Rails 5.0 (use use_transactional_tests= instead). (called from block in <module:FixtureSupport> at /Users/monteirobrena/.rvm/gems/ruby-2.2.2@global/gems/rspec-rails-3.1.0/lib/rspec/rails/fixture_support.rb:25)
Run Code Online (Sandbox Code Playgroud)

所以,我改变了我rails_helper.rb的使用方式:

config.use_transactional_tests = true
Run Code Online (Sandbox Code Playgroud)

现在我收到了这个错误:

/Users/monteirobrena/project/spec/rails_helper.rb:34:in `block in <top (required)>': undefined method `use_transactional_tests=' for #<RSpec::Core::Configuration:0x007fccf515e338> (NoMethodError)
from /Users/monteirobrena/.rvm/gems/ruby-2.2.2@global/gems/rspec-core-3.1.7/lib/rspec/core.rb:81:in `configure'
from /Users/monteirobrena/project/spec/rails_helper.rb:27:in `<top (required)>'
from /Users/monteirobrena/project/spec/controllers/messages_controller_spec.rb:1:in `require'
from /Users/monteirobrena/project/spec/controllers/messages_controller_spec.rb:1:in `<top (required)>'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `block in load_spec_files'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `each'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load_spec_files'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:96:in `setup'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:84:in `run'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in `invoke'
from /Users/monteirobrena/.rvm/gems/ruby-2.2.2@global/gems/rspec-core-3.1.7/exe/rspec:4:in `<top (required)>'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/bin/rspec:23:in `load'
from /Users/monteirobrena/.rvm/rubies/ruby-2.2.2/bin/rspec:23:in `<main>'
from /Users/monteirobrena/.rvm/gems/ruby-2.2.2@global/bin/ruby_executable_hooks:15:in `eval'
from /Users/monteirobrena/.rvm/gems/ruby-2.2.2@global/bin/ruby_executable_hooks:15:in `<main>'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢.

Pet*_*vin 7

您获得的弃用警告和建议来自Rails,而不是RSpec或rspec-rails gem.rspec-rails gem实现use_transactional_fixtures=并转向并在Rails中调用相同的方法,按照https://github.com/rspec/rspec-rails/blob/3-3-maintenance/lib/rspec/rails/fixture_support.rb.它没有实现use_transactional_tests=,因此当您进行更改时,您将收到该错误消息.

在升级rspec-rails gem以支持新的Rails 5功能之前,您需要直接设置Rails配置.

  • 对于那些在2018年找到此职位的人:我正在将Rails 4 Engine升级到Rails 5.1,并且为了解决此错误,我将所有出现的“ use_transactional_fixtures”替换为“ use_transactional_tests”。/spec/rails_helper.rb中的除外,该文件仍需要“ use_transactional_fixtures”。RSpec测试现在可以成功运行。 (3认同)
  • 你能解释我需要删除哪些行以及在这种情况下我需要添加哪些行? (2认同)