2017-09-17 1 views
1

J'utilise Frisy avec un nœud jasmin pour tester une API Meteor.Tests d'enfants ignorés dans Frisby JS avec nœud jasmin

Je souhaite tester la suppression d'une discussion dans une application de discussion. Pour cela, je dois créer une nouvelle discussion dans le chat et ajouter un message dans la discussion.

J'ai remarqué que mon test échoue si je le mets après la seconde méthode .then(). Il échoue aussi après le troisième .then(). Cependant, cela fonctionne correctement après la première méthode .then().

Exemple de code avec test explicite échoué expect (false) .toBe (true);:

var frisby = require('frisby'); 
describe("chat update", function() { 
    it("message added", function(done) { 
    frisby.post('http://localhost:3000/api/chat', { 
     name: "remove" 
    }) 
    .then(function (res) { 
     let id = res._body.id; 
     expect(false).toBe(true); // (1) it fails the test 
     frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage', 
     { 
      auteur: "Samuel", 
      message: "My message" 
     } 
    ) 
     .then(function (res) { 
     expect(false).toBe(true); // (2) Without (1) it's ignored by frisby 
     frisby.post('http://localhost:3000/api/chat/remove', 
      {id: id} 
     ) 
     .then(function (res) { 
      expect(false).toBe(true); // (3) Without (1) it's ignored by frisby 
     }) 
     }); 
    }) 
    .done(done); 
    }) 
}); 

Si je lance le test, il échouera grâce à attendre (false) .toBe (true); // (1) il échoue le test ligne. Si je supprime cette ligne, le test se déroulera et le jasmin le validera comme bon.

Connaissez-vous un moyen d'ignorer les tests (2) et (3)?

+0

Utilisez-vous l'ancienne version de Frisby ou la version plus récente? Je demande, car la "vieille" version utilise le jasmin-node et la nouvelle utilise Jest. –

+0

J'utilise le plus récent. J'ai trouvé la solution et je l'ai mis comme une réponse. J'ai oublié les opérateurs de retour. Merci. – jedema

Répondre

1

Finalement, j'ai trouvé la solution. C'est parce que j'ai oublié de retour tous action frisby (sauf le premier) comme dans le code suivant:

var frisby = require('frisby'); 
describe("chat update", function() { 
    it("message added", function(done) { 
    frisby.post('http://localhost:3000/api/chat', { 
     name: "remove" 
    }) 
    .then(function (res) { 
     let id = res._body.id; 
     return frisby.post('http://localhost:3000/api/chat/'+id+'/addmessage', 
     { 
      auteur: "Samuel", 
      message: "My message" 
     } 
    ) 
     .then(function (res) { 
     return frisby.post('http://localhost:3000/api/chat/remove', 
      {id: id} 
     ) 
     .then(function (res) { 
      expect(false).toBe(true); // Will fail the test 
     }) 
     }); 
    }) 
    .done(done); 
    }) 
}); 

Vous pouvez remarquer les opérateurs de retour avant frisby.post(). J'espère que cela aidera!