chai でオブジェクトをまるっと比較するのに deep.equal を使っています。もっと細かく assertion 書いた方がいいよというのはわかりますが、便利なので・・・。
expect(obj).to.be.deep.equal({ foo: 1, bar: 2, baz: 3 });
このとき、比較しているオブジェクトがもう少し複雑だと、失敗したときのメッセージが以下のように簡略化されてしまいます。
Failures:
1) Something doSomething
Failure/Error: expected { Object (foo, bar, ...) } to be like { Object (foo, bar, ...) }
これじゃあ何が違うのかわからない!
調べてみたところ、chai の仕様でした。inspect してみて、文字数が閾値未満だとそのまま表示し、閾値以上だと簡易表示にしてしまうのです。
chai 1.9.1 より前では、この閾値が固定で 40 だったのですが、1.9.1 から設定できるようになりました。
// 閾値を変更
chai.config.truncateThreshold = 100;
// 閾値を無効化
chai.config.truncateThreshold = 0;
異常に気づくための情報は常に多い方がいいと思い、無効化しています。
これで TDD がしやすくなりました。