Rails 6所有validate_presence_of测试失败

时间:2019-01-20 00:47:25

标签: ruby-on-rails testing rspec ruby-on-rails-6

它们失败,并带有:统一常量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继承的用户,但是我不确定为什么对于相同模型的不同测试,常数会有所不同?

3 个答案:

答案 0 :(得分:2)

我已经完成了这项工作。

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

答案 1 :(得分:0)

结果证明这是应当匹配器的错误。

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

答案 2 :(得分:0)

就我而言,这是快速解决方法:

# spec/rails_helper.rb - add to bottom

class ActiveModel::SecurePassword::InstanceMethodsOnActivation; end;