RSpecは、複数行の文字列を比較するときに "diff"形式の出力を提供します。 (配列を複数行の文字列に変換する以外の)配列を比較するときに似たようなことをする方法はありますか?RSpec配列マッチャーのdiffingを有効にする
1
A
答えて
3
私は間違いかもしれませんが、私はこの機能がRSpecに組み込まれているとは思いません。
しかし、あなたはimplement a custom matcher with a custom error messageはできる:
RSpec::Matchers.define(:eq_array) do |expected|
match { |actual| expected == actual }
failure_message do |actual|
<<~MESSAGE
expected: #{expected}
got: #{actual}
diff: #{Diffy::Diff.new(expected.to_s, actual.to_s).to_s(:color)}
MESSAGE
end
end
# Usage:
expect([1, 2, 3]).to eq_array([1, 4, 3])
diffy
ライブラリを使用しているこのデモ。あなたはこれを実装することができますが、あなたは合って見える
+0
これは私が探していたものです。私にとっての鍵は、組み込みのものを呼び出す方法を考え出すことでした。古い記事では、その違いを直接使うことを警告していました。 https://stackoverflow.com/questions/12551564/how-to-write-a-diffable-matcher-with-rspec2 – Zack
関連する問題
- 1. RSpecのカスタムdiffableマッチャー
- 2. RSpec配列とa_collection_containing_exactlyマッチャーの使い方は? C |
- 3. 有限オートマトンの文字列マッチャー
- 4. 無効マッチャー
- 5. Rspec:マッチャーが失敗したとき
- 6. cucumber、rspec、webratもしマッチャーであれば
- 7. どのようにして配列を有効にするか
- 8. カスタムマッチャーで組み込みRSpecマッチャーを使用できますか?
- 9. RSpec - 配列メソッドへのアクセス
- 10. 有効な2D配列のデルタデータ構造
- 11. capybara rspecマッチャーはレスポンスと同等です。have_selector "form"、:action => some_path
- 12. const配列内の要素を有効または無効にする
- 13. チェックボックスでテキストボックスの配列を有効または無効にする
- 14. 有効なjsonに迅速な配列を解析する
- 15. Rspecテストputs(2d配列)
- 16. 有効な配列に分割する方法
- 17. 私はこの配列を有効にすることができますので、javascriptの隠し配列
- 18. は効率的に、私は次の形式で配列オブジェクトの配列を有する
- 19. onClickで配列に追加するために.pushを有効に使用
- 20. 文字列の配列から有効なバイナリツリー
- 21. 配列内の文字列を無効にするために配列を無効にする
- 22. テーブルや配列のチェックボックスを解除して有効にする方法
- 23. 角度のUIグリッドで配列の長さを解決し、ページングを動的に有効/無効にする
- 24. rspec共有サンプルにパラメータを渡す
- 25. 有効なJSONである文字列から配列を抽出します
- 26. 有効なnumpy配列がIndexErrorを生成します:
- 27. エスプレッソの有界マッチャーとタイプセーフマッチャーの違いは何ですか?
- 28. これはC++の有効な2D配列定義ですか?
- 29. 有効、無効にする特定の列WPFツールキットのDataGrid
- 30. ルビーIは、配列のこの配列を有するストリング
あなたは探しているものを['match_array'](http://www.rubydoc.info/github/rspec/rspec-expectations/RSpec/Matchers:match_array)ですか?そうでない場合、望ましい行動には欠けていますか? –
@TomLord 'match_array'は、要素の順序を考慮しません。つまり、' expect([1,2,3])。〜match_array([3,2,1]) 'が成功します。 – Stefan
私の場合、順序は重要です。 – Zack