216 votes

Jasmine.js comparant les tableaux

Existe-t-il un moyen dans jasmine.js de vérifier si deux tableaux sont égaux, par exemple:

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

Ni l'un ni l'autre ne semblent fonctionner.

357voto

TheEwook Points 4412

Juste fait le test et ça marche avec toEqual

S'il vous plaît trouver mon test:

http://jsfiddle.net/7q9N7/3/

 describe('toEqual', function() {
    it('passes if arrays are equal', function() {
        var arr = [1, 2, 3];
        expect(arr).toEqual([1, 2, 3]);
    });
});
 

Juste pour informations:

toBe () versus toEqual (): toEqual () vérifie l'équivalence. toBe (), d'autre part, s'assure qu'ils sont exactement le même objet.

-4voto

gyeh Points 432

J'ai eu un problème similaire où l'un des tableaux a été modifié. Je l'utilisais pour $httpBackend , et l'objet renvoyé par celui-ci était en réalité un objet $promise contenant le tableau (pas un objet Array ).

Vous pouvez créer un outil de jasmin correspondant au tableau en créant une fonction 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);
    }
  });
});
 

Et puis, utilisez-le simplement dans vos tests comme les autres jasmins:

 it('should compare arrays properly', function() {
  var array1, array2;
  /* . . . */
  expect(array1[0]).toBe(array2[0]);
  expect(array1).toBeArray(array2);
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X