2017-09-04 2 views
0

J'essaie de lancer (en utilisant la commande npm run test et de déboguer j'ai été utilisé IDE Webstorm) le test d'intégration développé en utilisant le nœud .js écrit en tapuscrit, moka, chai et supertest pour l'application de noeud développée en utilisant tapuscrit. Dans la fonction de hook before(), nous appelons l'application qui initie réellement le service et cet appel concerne les fonctions asynchrones (async-await) utilisées (à partir du fichier app.ts/app.js de l'application de noeud).Exécuter ou Déboguer le test d'intégration avec nodeJs en utilisant le tapuscrit, Mocha, Chai et SuperTest pour les fonctions-api async/wait

Mais toujours, je reçois une erreur comme « Erreur: Vous n'êtes pas autorisé à accéder à la clé dans Google KMS » (à savoir en service) et plus il a dit: «Erreur: délai d'attente de 60000ms dépassée. Pour les tests asynchrones et les hooks, assurez-vous que "done()" est appelé; Si vous renvoyez une promesse, assurez-vous qu'elle se résout. ', mais si j'ai exécuté un service/une application individuellement, cela fonctionne correctement. Cela signifie que lors de l'exécution du service, le code asynchrone/attente de l'appel API/fonction est identique. Donc, mon point est ici est-ce que cela se produit en raison de timeout de la demande async/wait lors de l'initialisation du service de la fonction de hook avant().

Voici exemple de code dans le fichier test.int-test.ts,

import {expect} from "chai"; 
    const app = require('../app'); 
    const supertest = require('supertest'); 

    describe("Test model", function() { 

    this.timeout(60000); 

    before(async() => { 
     api = supertest(await app); 
     // app is here a entry point for my service/application which runs actually service/applicaiton. 
     // This file has async-await function which makes call to third party application 
     console.log('inside before: ', JSON.stringify(api)); 
    }); 

    describe('get', function() { 
     it('should respond with 200 Success', async() => { 
     // call to async function 
     }); 
    }); 
}); 

et sous le script de section dans package.json

"scripts": { 
"test": "nyc --reporter=html --reporter=text --reporter=cobertura node_modules/mocha/bin/_mocha --reporter mocha-multi-reporters --reporter-options configFile=mocha-multi-reporters.config build/test/test.int-test.js" 
} 

Quelqu'un peut-il faire face à une telle situation? que comment lancer async/wait service à partir du fichier de test d'intégration.

Répondre

0

Enfin, j'ai trouvé la solution pour exécuter et déboguer le test d'intégration, nous devons faire quelques changements ici.

  1. le plus important à émettre délai, nous devons définir le délai que 0 à savoir **this.timeout(0)**
  2. Lors du débogage doit pointer vers .js fichier dans la configuration de mocha dans WebStorm, ne pas utiliser .ts fichier, comme des crochets mocha up fichiers .js Pour exécuter et déboguer un test, nous pouvons également utiliser le fichier .ts pour lancer le test. (https://journal.artfuldev.com/write-tests-for-typescript-projects-with-mocha-and-chai-in-typescript-86e053bdb2b6).
  3. Pour exécuter, utilisez la commande 'npm run nom-de-test-script', mocha ne connectera que le fichier .js.