Должные совпадения и пользовательские сообщения об ошибках
Я пытаюсь выполнить некоторые базовые тесты 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") }