比較多行字符串時,RSpec提供「差異」式輸出。在比較數組時,有沒有辦法做類似的事情(除了將數組轉換爲多行字符串)?爲RSpec數組匹配器啓用差異
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 have_attributes匹配器
- 2. 函數參數的RSpec匹配器
- 3. 爲什麼RSpec匹配器不工作?
- 4. Rspec 3 vs Rspec 2匹配器
- 5. ActiveRecord :: RecordNotDestroyed的RSpec匹配器
- 6. rspec - 匹配器的選擇
- 7. Rspec匹配器評估css?
- 8. rails rspec render_template匹配器
- 9. Rspec:匹配器失敗時
- 10. rspec中的整數比較匹配器
- 11. 如何使用RSpec的an_instance_of匹配器
- 12. 在Rspec中使用期望匹配器
- 13. 在容差中匹配數組的值
- 14. rspec控制器spec匹配器
- 15. RSpec結合塊匹配器與非塊匹配器
- 16. RSpec套件性能差異
- 17. Rspec匹配語法
- 18. 如何在Rspec之外使用rspec期望和匹配器?
- 19. 差異的<xsl:模板匹配= 「*」>
- 20. 匹配兩張表以找出差異
- 21. 需要用rspec來匹配元素類的數組嗎?
- 22. PHP數組差異
- 23. php數組差異
- 24. JavaScript數組差異
- 25. Rails/RSpec匹配Rails匹配路線
- 26. 如何匹配JavaScript中字符組的差異?
- 27. 如何合併rspec中的匹配器?
- 28. rspec大十進制匹配器
- 29. 如何寫級聯的RSpec匹配器
- 30. 鏈接Rspec自定義匹配器
是['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