2017-09-17 2 views
1

Ich benutze Frisy mit Jasmine-Knoten, um eine Meteor API zu testen.ignorierte Kinder Tests in Frisby JS mit Jasmin-Knoten

Ich möchte das Entfernen einer Diskussion in einer Chat-App testen. Dazu muss ich eine neue Diskussion im Chat erstellen und eine Nachricht in die Diskussion einfügen.

Ich bemerkte, dass mein Test fehlschlägt, wenn ich es nach der zweiten .then() -Methode setzte. Es scheitert auch nach dem dritten .then(). Es funktioniert jedoch korrekt nach der ersten .then() - Methode.

Ein Beispielcode mit explizit fehlgeschlagenem Test 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); 
    }) 
}); 

Wenn ich den Test ausführen, wird es dank nicht erwarten (false) .toBe (true); // (1) es schlägt die Prüfung Linie fehl. Wenn ich diese Zeile entferne, wird der Test ausgeführt und Jasmin als richtig erkannt.

Kennen Sie einen Weg, die (2) und (3) Tests nicht zu ignorieren?

+0

Verwenden Sie die alte Version des Frisby oder die neuere Version? Ich frage, weil die "alte" Version Jasmin-Knoten verwendet und die neue Jest verwendet. –

+0

Ich benutze die neuere. Ich habe die Lösung gefunden und habe sie als Antwort formuliert. Ich habe die Rückgabeoperatoren vergessen. Vielen Dank. – jedema

Antwort

1

Endlich habe ich die Lösung gefunden. Es ist, weil ich Rückkehr aller frisby Aktion (außer dem ersten) vergessen habe, wie in dem folgenden Code:

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); 
    }) 
}); 

Sie können feststellen, die Rückkehr Betreiber vor frisby.post(). Ich hoffe es hilft!

Verwandte Themen