У меня есть пользовательское сопоставление, которое использует ожидаемые значения в своем блоке совпадений (код здесь упрощен)
RSpec::Matchers.define :have_foo_content do |expected|
match do |actual|
expect(actual).to contain_exactly(expected)
expect(actual.foo).to contain_exactly(expected.foo)
end
end
Обычно сообщение об ошибке будет выглядеть так:
expected collection contained: ["VLPpzkjahD"]
actual collection contained: ["yBzPmoRnSK"]
the missing elements were: ["VLPpzkjahD"]
the extra elements were: ["yBzPmoRnSK"]
Но когдаиспользуя собственный сопоставитель, он только печатает это, и важные данные отладки теряются:
expected MyObject to have_foo_content "foobar"
Итак, возможно ли повторно использовать сообщение об ошибке из блока сопоставления в качестве сообщения об ошибке? Я знаю, что могу предоставить пользовательские сообщения об ошибках с
failure_message do |actual|
# ...
end
Но я не знаю, как вы могли получить доступ к сообщению об ошибке, которое вызвала приведенная выше ошибка.