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?
3 Réponses :
Il s’avère que c’est un bogue avec les correspondances de type shoulda.
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
Dans mon cas, c'était une solution rapide:
# spec/rails_helper.rb - add to bottom class ActiveModel::SecurePassword::InstanceMethodsOnActivation; end;