Rails 6 все тесты validate_presence_of не пройдены

Они терпят неудачу с: унифицированной константой ActiveModel::SecurePassword::InstanceMethodsOnActivation

Я пытаюсь обновить приложение rails 5.2 до бета-версии rails 6, и кажется, что все работает нормально, за исключением моих validate_presence_of specs.

Например

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, но я не уверен, почему константа может отличаться в разных тестах для одной и той же модели?

2 ответа

Решение

Я сделал эту работу.

Здесь есть запрос на получение доступа к musta_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;

Оказывается, это ошибка с musta-matchers.

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

Другие вопросы по тегам