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 つの int と文字列の配列です。

4

1 に答える 1

2

これは、すべての失敗メッセージですべてのオブジェクトの表示を処理するための一般的なソリューションではありませんが、 https://www.relishapp.com/rspec/rspec-expectations/で説明されている手法を使用して、任意の 1 つの例の失敗メッセージをカスタマイズできます。 docs/customized-message .

Ruby の標準の prettyprint 関数のカスタマイズと組み合わせて、より小さな線幅を使用し、その結果を文字列として返すと、次のようになります。

arr.should be_empty, "expected: empty array\ngot:\n#{PP.pp(arr,'',20)}"
于 2013-10-29T15:36:03.503 に答える