2
votes

Rails 6, tous les tests validate_presence_of échouent

ils échouent avec: constante unitaire ActiveModel :: SecurePassword :: InstanceMethodsOnActivation

J'essaie de mettre à jour une application rails 5.2 vers la version bêta de rails 6, et tout semble bien fonctionner à l'exception de mes spécifications validate_presence_of. p>

Par exemple

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

le validate_length_of réussit bien, et le validate_presence de ne le fait pas. Les publications appartiennent à un utilisateur qui hérite d'un Clearance :: User, mais je ne sais pas pourquoi la constante varierait sur différents tests pour le même modèle?


0 commentaires

3 Réponses :


0
votes

Il s’avère que c’est un bogue avec les correspondances de type shoulda.

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


0 commentaires

2
votes

J'ai fait ce travail.

Il y a une Pull Request à shoulda_matchers ici:

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

Jusqu'à ce que l'équipe shoulda_matchers la fusionne, utilisez ma version ici: p>

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

Dans votre Gemfile:

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


0 commentaires

0
votes

Dans mon cas, c'était une solution rapide:

# spec/rails_helper.rb - add to bottom

class ActiveModel::SecurePassword::InstanceMethodsOnActivation; end;


0 commentaires