なぜ以下が失敗するのでしょうか。
expect([0,0]).to.equal([0,0]);
それをテストする正しい方法は何ですか?
深いEqualを使うようにしてください。入れ子になった配列と入れ子になったJsonを比較します。
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
メインのドキュメントサイト を参照してください。
これがchaiを使って連想配列を深くテストする方法です。
2つのassociative配列が等しいことを主張しようとしたときに問題がありました。私はこれらが実際にはJavaScriptで使用されるべきではないことを知っていますが、連想配列への参照を返すレガシーコードの周りにユニットテストを書いていました。 :-)
関数呼び出しの前に、変数をオブジェクトとして(配列ではなく)定義することによって行いました。
var myAssocArray = {}; // not []
var expectedAssocArray = {}; // not []
expectedAssocArray['myKey'] = 'something';
expectedAssocArray['differentKey'] = 'something else';
// legacy function which returns associate array reference
myFunction(myAssocArray);
assert.deepEqual(myAssocArray, expectedAssocArray,'compare two associative arrays');
さらに、to.eql
は、データがまったく同じであるときにto.eq
によって引き起こされる深層等価エラーを回避します。たとえば、次のようなアサーションです。
AssertionError: expected { Object (_thing, id) } to equal { Object (_thing, id) }