219

jasmine.js で 2 つの配列が等しいかどうかを確認する方法はありますか。次に例を示します。

arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])

どちらも機能していないようです。

4

4 に答える 4

-4

配列の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);
});
于 2014-10-22T08:20:55.277 に答える