いもろぐ

思い立ったら書いていくスタイルで

RSpec で expect した時のログ

rspecでexpectするときに、「文字列が詰まった配列」を期待していたのですが、

  1. 期待と違う文字列が入ってた ("aaa"を期待してたのに"bbb"が入ってた)
  2. 期待してない文字列が入ってた (配列の要素数が増えてた)

ってことがあって、ログに出力されるdiff見方がよくわからなかったので整理してみました。

# test_spec.rb

require 'rspec'
expected_data = {
  match: "title",
  mismatch: "description"
}

got_data = {
  match: "title",
  mismatch: "description!!",
  added: "22"
}

describe 'てすと' do
  context '配列比較' do
    it 'できるかな' do
      expect(got_data).to eq(expected_data)
    end
  end
end

で、結果が下記。

てすと
  配列比較
    できるかな (FAILED - 1)

Failures:

  1) てすと 配列比較 できるかな
     Failure/Error: expect(got_data).to eq(expected_data)

       expected: {:match=>"title", :mismatch=>"description"}
            got: {:match=>"title", :mismatch=>"description!!", :added=>"22"}

       (compared using ==)

       Diff:

       @@ -1,3 +1,4 @@
       +:added => "22",
        :match => "title",
       -:mismatch => "description"
       +:mismatch => "description!!"

     # C:/spec/test_spec.rb:34:in `block (3 levels) in <top (required)>'

Finished in 0.00554 seconds
1 example, 1 failure

  • [無印] は取得値と期待値が一致してるもの。
  • [+] は取得値
  • [-] は期待値
  • 取得値と期待値が異なるものは + が付いたものと - が付いたものが表示される
  • [@@ -1,3 +1,4 @@] ってどういう意味なんだろう

きっとgitなどのソースコード管理ツールに慣れてる人はなんてこと無いんだろうなと思った。

[追記]

  • RSpecじゃなくてdiffの基本的な見方の話じゃね?って教えてもらったので勉強になりました。m( )m
  • http://d.hatena.ne.jp/kakurasan/20070610/p2

    「@@」の付いている行は、テキストの違いが存在する領域(Hunk/テキストブロック)の始まりを示し、数字は修正前後のファイル内の該当する範囲を示す。