[Jasmine] Tester une fonction qui retourne une Promise

En surfant, j’ai trouvé plein de trucs compliqués mais au final, voici quelques choses qui fonctionnent bien :

// getLocalContainer
it('LocalContainerService : getLocalContainer 1stTime', (done) => {
    service.getLocalContainer(defaultCode).then(function(obj) {
       expect(defaultCode).toBe('to be found');
       done();
    }).catch(function(err) {
       expect(err).toBe('NOTFOUND');
       done();
    });
});

L’astuce est de passer en paramètre done. Les explications sont ici. Différents exemples : ici. Par défaut, l’attente est assez courte si il y a plusieurs appels. Il est possible de le modifier :

// Instanciation of service
beforeEach(() => {
   originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
   jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});

afterEach(function() {
  jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});