Bonjour,

Quelle est la différence entre toBe et toEqual ?

Merci,

2 réponses


Maenhyr
Réponse acceptée

toBe : https://github.com/jasmine/jasmine/blob/master/src/core/matchers/toBe.js
toEqual: https://github.com/jasmine/jasmine/blob/master/src/core/matchers/toEqual.js

toBe est un simple test d'egalité de référence (===). Les primitifs (string, number, ...) seront considérés comme comme égaux. Seulement deux objets ayant les mêmes propriétés auront deux références différentes en mémoire et seront donc considérés comme différents.

toEqual va plus loin. Il va analyser chaque propriété d'un objet et va comparer leurs valeurs.

describe('Hello world', function() {
  it('should be', function() {
    expect(1).toBe(1);  // success
    expect({foo: 'bar'}).toBe({foo: 'bar'}); // failure
  });

  it('should equal', function() {
    expect(1).toEqual(1);  // success
    expect({foo: 'bar'}).toEqual({foo: 'bar'}); // success
  });
});

Merci @prbaron