深く比較したときに2つのオブジェクトの違いを教えてくれるアサーションライブラリはありますか?
チャイを使ってみましたが、オブジェクトが違うのですが、どこにあるのかわかりません。ノードのアサートについても同じです。
深く比較したときに2つのオブジェクトの違いを教えてくれるアサーションライブラリはありますか?
チャイを使ってみましたが、オブジェクトが違うのですが、どこにあるのかわかりません。ノードのアサートについても同じです。
この StackOverflow answerに基づいて、テストが非同期だったために問題が発生していたと思います。
次のパターンを使用して、差分が再び正しく機能するようになりました。
try {
expect(true).to.equal(false);
done(); // success: call done with no parameter to indicate that it() is done()
} catch(e) {
done(e); // failure: call done with an error Object to indicate that it() failed
}
chai 1.5.0 と mocha 1.8.1 を使用すると、次のように動作します。
var expect = require('chai').expect;
it("shows a diff of arrays", function() {
expect([1,2,3]).to.deep.equal([1,2,3, {}]);
});
it("shows a diff of objects", function() {
expect({foo: "bar"}).to.deep.equal({foo: "bar", baz: "bub"});
});
結果:
✖ 2 of 2 tests failed:
1) shows a diff of arrays:
actual expected
1 | [
2 | 1,
3 | 2,
4 | 3,
5 | {}
6 | ]
2) shows a diff of objects:
actual expected
{
"foo": "bar",
"baz": "bub"
}
ここに表示されていないのは、行が予期しない/欠落している場所で、出力が赤/緑で強調表示されていることです。
はい、あります: assert-diff
次のように使用できます。
var assert = require('assert-diff')
it('diff deep equal with message', function() {
assert.deepEqual({pow: "boom", same: true, foo: 2}, {same: true, bar: 2, pow: "bang"}, "this should fail")
})
結果:
1) diff deep equal with message:
AssertionError: this should fail
{
- bar: 2
+ foo: 2
- pow: "bang"
+ pow: "boom"
}