DatabaseCleaner引发NoMethodError:nil:NilClass的未定义方法“ rollback”

书目技术

我有一个使用rspec并包含DatabseCleaner的Rails应用程序,以确保每个测试之间的测试数据库都是干净的。

DatabaseCleaner在我们的配置spec/rails_helper.rb

  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

  config.around(:each) do |example|
    DatabaseCleaner.cleaning do
      example.run
    end
  end

我们一直在ci环境中看到间歇性错误,在该环境中单个测试将失败

 1) LibraryHours Required fields Library Hour must have a location
 Failure/Error:
   DatabaseCleaner.cleaning do
     example.run
   end

 NoMethodError:
   undefined method `rollback' for nil:NilClass
 # ./spec/rails_helper.rb:66:in `block (2 levels) in <top (required)>'

我们无法使用rspec运行中的种子在本地重现错误,并且正在进行真正的故障调试。

书目技术

因此,事实证明,一个开发人员(我)不了解rails_helper中的DatabaseCleaner调用已应用于所有规范,DatabaseCleaner.clean并向其中一个规范文件添加了额外的调用删除附件:

 after do
    DatabaseCleaner.clean
  end

解决了这个问题。

我猜这是由两次调用引起的竞争状态DatabaseCleaner.clean

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NoMethodError:nil:NilClass的未定义方法“ +”

nil:NilClass <NoMethodError>的未定义方法'[]'

NoMethodError未定义的方法`',用于nil:NilClass

未定义的方法“ +”,用于nil:NilClass(NoMethodError)-Ruby

Rails DateTime-NoMethodError(nil:NilClass的未定义方法“ []”)

学习 Ruby on Rails:NoMethodError(未定义方法 `[]' for nil:NilClass):

nil:NilClass Ruby on Rails的未定义方法'>'(NoMethodError)

ActiveStorage:NoMethodError(nil:NilClass 的未定义方法`[]')

NoMethodError未定义的方法'[] ='为nil:NilClass

`<main>': nil:NilClass (NoMethodError) 的未定义方法 `call'

Heroku + Rails:NoMethodError(nil:NilClass的未定义方法“ /”)

NoMethodError(为 nil:NilClass 未定义方法 `created_at')

测试抱怨NoMethodError:nil:NilClass的未定义方法“名称”

事件中的NoMethodError nil:NilClass的未定义方法“名字”

NoMethodError未定义的方法`name'为nil:NilClass

NoMethodError(nil:NilClass的未定义方法“ posts”)

为 nil:NilClass (NoMethodError) 获取错误未定义的方法“[]”

NoMethodError:nil:NilClass的未定义方法“用户”

NoMethodError-未定义的方法`get'for nil:NilClass

NoMethodError:nil:NilClass的未定义方法'id'

NoMethodError:未定义的方法“存根!” 对于nil:NilClass

NoMethodError - nil:NilClass 的未定义方法`map'

NoMethodError(nil:NilClass的未定义方法“ destroy”):

#<NoMethodError:未定义的方法'any?' 对于nil:NilClass>

NoMethodError发生未定义的nil:NilClass方法

银莲花-NoMethodError:nil:NilClass的未定义方法“ xpath”

Ruby 方法返回为“未定义的方法‘include?’ 对于 nil:NilClass (NoMethodError)"

在方法调用之前,nil:NilClass(NoMethodError)的Ruby未定义方法“ []”

使用Ruby获取方法错误“ NoMethodError:nil:NilClass的未定义方法'each'”