Rails 6 个 validate_presence_of 测试全部失败

Rails 6 all validate_presence_of tests fail

他们失败了:统一常量ActiveModel::SecurePassword::InstanceMethodsOnActivation

我正在尝试将 rails 5.2 应用程序更新到 rails 6 beta,除了我的 validate_presence_of 规格外,一切似乎都运行良好。

例如

RSpec.describe Post, type: :model do
  context 'validations' do
    subject { Post.new(body: Faker::Movie.quote)}
    it { should validate_presence_of :body }
    it { should validate_length_of(:body).is_at_most(5000).on(:create) }
  end
end

validate_length_of 没问题,validate_presence 没通过。帖子确实属于从 Clearance::User 继承的用户,但我不确定为什么常数会在同一模型的不同测试中有所不同?

事实证明这是 shoulda-matchers 的错误。

https://github.com/thoughtbot/shoulda-matchers/issues/1167

我完成了这项工作。

此处有 shoulda_matchers 的合并请求:

https://github.com/thoughtbot/shoulda-matchers/pull/1169

直到shoulda_matchers团队合并它,这里使用我的版本:

https://github.com/morsedigital/shoulda-matchers

在你的 Gemfile 中:

gem 'shoulda-matchers', groups: [:test], git: 'https://github.com/morsedigital/shoulda-matchers'

就我而言,这是快速修复:

# spec/rails_helper.rb - add to bottom

class ActiveModel::SecurePassword::InstanceMethodsOnActivation; end;