気持ち
Immutable.jsは便利だけど、chaiのeqlを使ってspecを書くと、Immutable.jsの内部的な値の差分まで検出してしまうので、テストが通らないしその差分を見ても訳がわからない。
Immutable.is()を使っちゃうとテストが落ちた時の差分情報が見れないので、あんまり使いたくない。
(みんなこの辺どうしてるんすかね?)
やっつけ
Immutable.jsはtoJS()という、構造が同等の普通のjs objectを返してくれるAPIがあるので、toJS()が定義されているオブジェクトがeqlに渡されたら内部的にtoJS()を呼んで元々のeqlで比較するpluginを作った。plugin作りの練習にはちょうど良かった。
要するに、意識しなくても
expect(actual.toJS()).to.eql(expected.toJS());
をやってくれるようにした。
詳しく
https://github.com/hokuma/chai-eql-immutable
やっつけで作ったのでテストはないです。Travis CI使ってみたいからその一環でやるかも。