在失败时美化打印数组

5
describe Rspec do
  it 'should print arrays in a readable manner' do
    arr = [
      [0, :a, -1],
      [1, :b, -2],
      [2, :c, -3],
      [3, :d, -4],
      [4, :e, -5], 
      [6, :g, -7], 
      [7, :h, -8], 
      [8, :i, -9]
    ]
    arr.should eql []
  end
end

失败情况下:

Failures:

1) Rspec should print arrays in a readable manner
   Failure/Error: arr.should eql []

     expected: []
          got: [[0, :a, -1], [1, :b, -2], [2, :c, -3], [3, :d, -4], [4, :e, -5], [6, :g, -7], [7, :h, -8], [8, :i, -9]]

有没有办法告诉Rspec以漂亮的方式打印其失败信息?我的实际示例可以具有数组中的 10 到 40 个元素,每个元素都是一个包含5个整数和一个字符串的数组。

有人能告诉我为什么这个被踩了吗? - yurisich
很可能有人没理解这个问题。 - fotanus
1个回答

2

虽然这不是处理所有对象在所有失败消息中显示的通用解决方案,但您可以使用描述在https://www.relishapp.com/rspec/rspec-expectations/docs/customized-message中介绍的技术为任何一个示例自定义失败消息。

结合自定义Ruby标准漂亮打印函数以使用较小的行宽并将其结果作为字符串返回,您可以得到:

arr.should be_empty, "expected: empty array\ngot:\n#{PP.pp(arr,'',20)}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接