7

深く比較したときに2つのオブジェクトの違いを教えてくれるアサーションライブラリはありますか?

チャイを使ってみましたが、オブジェクトが違うのですが、どこにあるのかわかりません。ノードのアサートについても同じです。

4

4 に答える 4

3

サブスタックのディフレットはおそらくあなたが必要とするものです

更新: しかし、待っください

于 2012-12-10T02:56:44.157 に答える
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
}
于 2014-06-11T17:23:04.770 に答える
2

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"
  }

ここに表示されていないのは、行が予期しない/欠落している場所で、出力が赤/緑で強調表示されていることです。

于 2013-03-10T01:26:48.430 に答える
2

はい、あります: 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"
 }
于 2016-08-19T22:36:02.823 に答える