У меня есть два хеша h1
и h2
, которые я хотел бы сравнить в RSpec.Как сравнить два хэша в RSpec?
Я хочу проверить, что элементы h1
такие же, как h2
после некоторых преобразований, которые мы назовем f
. То есть, я хочу проверить, что для каждого ключа k
в h1
, h1[k] == f(h2[k])
.
Например, если все значения в h2
в два раза больше соответствующих значений в h1
, то я хочу, чтобы проверить, что для каждого ключа k
в h1, h2[k] == h1[k] * 2
.
Каков правильный способ сделать это в RSpec? В настоящее время я:
h1 = ...
expect(
h2.all? { |k,v|
v == f(h1[k])
}
).to be true
но это похоже неуклюжий.
Я бы создал вспомогательный метод 'equal? (Other)', который вычисляет - оттуда, 'ожидать (h2.equal? (H1)). Быть истинным' – onebree
Ваш вопрос очень вводит в заблуждение. Вы переключаете роль 'h1' и' h2' в свое объяснение и в свой код. – sawa
Кроме того, ваше описание (а также код) описывает, что соответствие является одним из способов, то есть не имеет значения, имеет ли 'h2' текст объяснения, кроме того, что имеет значение' h1'. Это то, что вы намерены? – sawa