首页 > 解决方案 > Rails 6 所有 validate_presence_of 测试均失败

问题描述

他们失败了:统一常量 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 继承的用户,但我不确定为什么常数会在同一模型的不同测试中有所不同?

标签: ruby-on-railstestingrspecruby-on-rails-6

解决方案


我已经完成了这项工作。

这里有一个对 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'

推荐阅读