令人困惑的 RSpec 哈希匹配差异

Confusing RSpec hash match diff

我正在使用 RSpec match 匹配器来检查哈希是否包含预期值。当散列的一个键不匹配时,所有动态(a_string_starting_with,等)值都显示为不匹配。当您尝试匹配更大的哈希值时,它尤其会让人分心。我想知道是否有另一种方法检查散列,所以只有真正不匹配的值才会出现在 diff 中。

这是一个示例,其中 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

我想知道是否应该使用另一个匹配器。或者是否有任何自定义匹配器或 gem?

这个问题是 RSpec 使用的当前差异 gem 并且他们已经意识到这个问题,尽管目前没有解决方案,正如这些票证所见:

工单中目前提出的解决方案之一与 Mosaaleb 的建议类似。