2017-10-20 25 views
1

J'essaie de lancer le test d'une promesse, mais le test échoue en arguant qu'il a dépassé la limite de timeout, et suggère de m'assurer que j'ai les clauses done.Mocha, test de nodejs promesse ne peut pas finir parce que je n'ai pas fait

Cela fait partie de mon code de test:

$configurations 
    .updateConfiguration(configurations_driver.NOT_VALID_MODEL) //invalid model 
    .then(function() { 
     done(new Error("Expected INVALID_MODEL error but got OK")); 
    }, function (error) { 
     chai.assert.isNotNull(error); 
     chai.expect(error.message).to.be.eq("INVALID_MODEL_ERROR"); 
     chai.expect(error.kind).to.be.eq("ERROR_KIND"); 
     chai.expect(error.path).to.be.eq("ERROR_PATH"); 
     done(); 
    }) 
    .catch(done); 
}); 

J'ai toutes les clauses faites là-dedans comme vous pouvez le voir, donc je ne sais pas si je me manque quelque chose dans le test ou la structure est juste faux.

Répondre

4

Mocha prend en charge les promesses de test sans utiliser done tant que vous return la promesse.

const expect = chai.expect 

it('should error', function(){ 
    return $configurations 
    .updateConfiguration(configurations_driver.NOT_VALID_MODEL) //invalid model 
    .then(()=> { throw new Error("Expected INVALID_MODEL error but got OK")}) 
    .catch(error => { 
     expect(error).to.not.be.null; 
     expect(error.message).to.equal("INVALID_MODEL_ERROR"); 
     expect(error.kind).to.equal("ERROR_KIND"); 
     expect(error.path).to.equal("ERROR_PATH"); 
    }) 
}) 

Regardez aussi chai-as-promised pour faire des tests de promesse plus comme des assertions/attentes standards chai.

chai.should() 
chai.use(require('chai-as-promised')) 

it('should error', function(){ 
    return $configurations 
    .updateConfiguration(configurations_driver.NOT_VALID_MODEL) 
    .should.be.rejectedWith(/INVALID_MODEL_ERROR/) 
}) 

sur les environnements de nœud ou où vous avez babel/babel-register vous pouvez également utiliser des async/await gestionnaires promesse

it('should error', async function(){ 
    try { 
    await $configurations.updateConfiguration(configurations_driver.NOT_VALID_MODEL) 
    throw new Error("Expected INVALID_MODEL error but got OK")}) 
    } catch (error) { 
    expect(error).to.not.be.null; 
    expect(error.message).to.equal("INVALID_MODEL_ERROR"); 
    expect(error.kind).to.equal("ERROR_KIND"); 
    expect(error.path).to.equal("ERROR_PATH"); 
    } 
})