2015-05-22 13 views
9

Sto scrivendo i test delle unità Moka Javascript sul codice che restituisce le promesse. Sto usando la libreria Chai as Promised. Mi aspetto che il seguente test dell'unità minimo fallisca.Come registrare un test Mocha non riuscito su una Promessa

var chai = require("chai"); 
var chaiAsPromised = require("chai-as-promised"); 
chai.use(chaiAsPromised); 
chai.should(); 

var Promise = require("bluebird"); 

describe('2+2', function() { 
    var four = Promise.resolve(2 + 2); 
    it('should equal 5', function() { 
     four.should.eventually.equal(5); 
    }) 
}); 

Quando ho eseguito questo test, vedo un errore di asserzione stampata alla console, ma il test conta ancora come passaggio.

> mocha test/spec.js 


    2+2 
    ✓ should equal 5 
Unhandled rejection AssertionError: expected 4 to equal 5 


    1 passing (10ms) 

Come faccio a scrivere questo test in modo che un'asserzione fallita fa sì che il test di contare come un fallimento?

risposta

10

Avevo bisogno di restituire il risultato di asserzione. Questo test ha esito negativo come previsto.

it('should equal 5', function() { 
     return four.should.eventually.equal(5); 
    }) 
+1

e se è necessario fare più di un'asserzione ... – Jeremy

+2

Utilizzare 'Promise.all' per combinare più asserzioni. –

18

Per chiunque altro abbia problemi con asserzioni fallite non non superano le prove di unità con promesse, ho imparato che non si deve passare done alla funzione. Invece, basta restituire la promessa:

it('should handle promises', function(/*no done here*/) { 

    return promiseFunction().then(function(data) { 
     // Add your assertions here 
    }); 

    // No need to catch anything in the latest version of Mocha; 
    // Mocha knows how to handle promises and will see it rejected on failure 

}); 

This article mi ha segnalato nella giusta direzione. In bocca al lupo!

+1

La migliore risposta nell'universo di sempre. Bene, OK, puoi vedere che sto lottando contro la mia ignoranza JavaScript un bel po 'ultimamente - ma sul lato positivo, mi rende grato per piccoli favori. :) –

Problemi correlati