Путаница различий в хэшах RSpec

#ruby #rspec #rspec-rails

Вопрос:

Я использую сопоставитель совпадений RSpec, чтобы проверить, содержит ли хэш ожидаемые значения. Когда ключ хэша не совпадает, все динамические ( a_string_starting_with и т.д.) значения отображаются как не совпадающие. Это особенно отвлекает, когда вы пытаетесь сопоставить больший хэш. Мне интересно, есть ли другой способ проверить хэш, чтобы в разнице отображались только те значения, которые действительно не совпадают.

Вот пример, где a отмечен красным, хотя значение правильное.

 it 'matches' do
  actual = {
    a: 'test test',
    b: 1,
    c: 2,
  }

  expect(actual).to match(
    a: a_string_starting_with('test'),
    b: 0,
    c: 2,
  )
end
 

Разница в матче

Мне интересно, есть ли еще один сопоставитель, который я должен использовать. Или есть ли для этого какие-либо специальные сопоставители или драгоценные камни?

Комментарии:

1. Не могли бы вы попробовать это : expect(actual).to include(a: match(/^test/), b: 1, c: 2)

2. Результаты те же, a отображается красным цветом, когда b значение неверно.

Ответ №1:

Проблема с этим заключается в текущем отличии, используемом RSpec, и они уже знают об этой проблеме, хотя в настоящее время исправления не существует, как видно из этих билетов:

Одно из решений, предложенных на данный момент в билете, похоже на то, что предлагает Мозаалеб.

Комментарии:

1. Спасибо за ссылки на проблемы!