Должные совпадения и пользовательские сообщения об ошибках

Я пытаюсь выполнить некоторые базовые тесты rspec с использованием mata matchers и столкнулся с ошибкой, которую раньше не видел в SO.

У меня есть уникальный атрибут с именем name, но по причинам, необходимым для проекта, я переписал стандартное сообщение "уже было принято" с моей собственной формой сообщения в config/locales/en.yml, и, похоже, Likea не нравится Это.

Я получил это сообщение об ошибке

 Failure/Error: it { should validate_uniqueness_of(:name) }

   Flavor did not properly validate that :name is case-sensitively unique.
     Given an existing Flavor whose :name is ‹"Factory Flavor Namea"›,
     after making a new Flavor and setting its :name to ‹"Factory Flavor
     Namea"› as well, the matcher expected the new Flavor to be invalid and
     to produce the validation error "has already been taken" on :name. The
     record was indeed invalid, but it produced these validation errors
     instead:

     * name: ["This flavor name is already in the system"]
     * abbreviation: ["This abbreviation is already in use"]

Есть ли параметр, который мне не хватает в musta-matchers, который позволил бы пройти тест и не беспокоиться о сообщении об ошибке, или это ограничение модуля?

1 ответ

Решение

Если вы не используете with_message метод на совпадение, то он использует сообщение по умолчанию.

Для того, чтобы ваш тест работал, вы должны переопределить стандартное сообщение:

it { expect(subject).to validate_uniqueness_of(:name).with_message("has already been taken") }
Другие вопросы по тегам