jasmine.jsに、2つの配列が等しいかどうかを確認する方法はありますか。次に例を示します。
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
どちらも動作しないようです。
jasmine.jsに、2つの配列が等しいかどうかを確認する方法はありますか。次に例を示します。
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
どちらも動作しないようです。
回答:
テストを行っただけで動作します toEqual
私のテストを見つけてください:
describe('toEqual', function() {
it('passes if arrays are equal', function() {
var arr = [1, 2, 3];
expect(arr).toEqual([1, 2, 3]);
});
});
情報のみ:
toBe()とtoEqual()の比較:toEqual()は等価性をチェックします。一方、toBe()は、それらがまったく同じオブジェクトであることを確認します。
toBeCloseTo(expected,2)
が、うまくいかないようです。
配列に値がある場合は、以下のような配列を比較できます
it('should check if the array are equal', function() {
var mockArr = [1, 2, 3];
expect(mockArr ).toEqual([1, 2, 3]);
});
ただし、ある関数から返された配列に1つ以上の要素があり、すべてがゼロの場合は、
expect(mockArray[0]).toBe(0);
レコードのためだけに、JSON.stringifyを使用して常に比較できます
const arr = [1,2,3];
expect(JSON.stringify(arr)).toBe(JSON.stringify([1,2,3]));
expect(JSON.stringify(arr)).toEqual(JSON.stringify([1,2,3]));
すべて味のメーターです。これは複雑なリテラルオブジェクトにも機能します
アレイの1つが変更されたという同様の問題がありました。私はそれをに使用していましたが$httpBackend
、そこから返されたオブジェクトは実際に$promise
は配列ではなくArray
オブジェクトでした。
toBeArray
関数を作成することにより、配列と一致するジャスミンマッチャーを作成できます。
beforeEach(function() {
'use strict';
this.addMatchers({
toBeArray: function(array) {
this.message = function() {
return "Expected " + angular.mock.dump(this.actual) + " to be array " + angular.mock.dump(array) + ".";
};
var arraysAreSame = function(x, y) {
var arraysAreSame = true;
for(var i; i < x.length; i++)
if(x[i] !== y[i])
arraysAreSame = false;
return arraysAreSame;
};
return arraysAreSame(this.actual, array);
}
});
});
そして、他のジャスミンマッチャーと同じように、テストで使用します。
it('should compare arrays properly', function() {
var array1, array2;
/* . . . */
expect(array1[0]).toBe(array2[0]);
expect(array1).toBeArray(array2);
});
x=[1,2]
、y=[1,2,3]
それが唯一の最初のチェック以来x.length
の要素を。これは、if (x.length !== y.length) { return false; }
事前に確認することで修正できます。
for (var i; ...)
=> x[undefined]
、var arraysAreSame = function ... var arraysAreSame = true
:(
expect([1]).toBeArray([2])
ます。そしてまた、他のアレイ本当に、理由undefined + 1 => NaN