2016-07-15 14 views
0

Ich schrieb diesen Test nach dem Tutorial, das ich gesehen habe. Ich möchte absichtlich einen Fehler (Anzahl der Likes) bekommen, aber ich bekomme immer einen bestandenen Test.Warum ist mein Albtraumtest immer erfolgreich, auch wenn er fehlschlagen sollte?

Dies ist mein Code:

var Nightmare = require('nightmare'); 
var expect = require('chai').expect; 

describe('test youtube search results', function() { 

    it('check the likes', function() { 
     var nightmare = Nightmare() 
     nightmare 
      .goto('https://www.youtube.com/watch?v=0_oPsFTyhjY') 
      .scrollTo(10000,0) 
      .wait('#comment-section-renderer-items') 
      .evaluate(function() { 
       return document.querySelector('#watch8-sentiment-actions > span > span:nth-child(1) > button > span').innerText; 
      }) 
      .end() 
      .then(function(likes) { 
       expect(likes).to.equal('245'); 
      }) 
    }); 
}); 

Antwort

0

Was Sie von Albtraum erhalten, ist ein Versprechen. Gib einfach das Versprechen von deinem Test zurück. Und setze ein höheres Timeout, um Nightmare Zeit zum Laufen zu geben. Also:

it('check the likes', function() { 
    this.timeout(10000); // <-- Set a higher timeout. 
    var nightmare = Nightmare() 
    return nightmare     // <-- The return is here. 
     .goto('https://www.youtube.com/watch?v=0_oPsFTyhjY') 
     .scrollTo(10000,0) 
     .wait('#comment-section-renderer-items') 
     .evaluate(function() { 
      return document.querySelector('#watch8-sentiment-actions > span > span:nth-child(1) > button > span').innerText; 
     }) 
     .end() 
     .then(function(likes) { 
      expect(likes).to.equal('245'); 
     }) 
}); 

Andernfalls weiß Mocha nicht, wenn Ihr Test tatsächlich durchgeführt wird. Bei asynchronen Tests müssen Sie Mocha mitteilen, wann der Test durchgeführt wurde. Ein Versprechen zurückzugeben ist eine Möglichkeit, dies zu tun.

+0

Jetzt scheitert es die ganze Zeit, warum das? – ediaden

+0

Dies ist der Fehler, den ich bekam Fehler: Timeout von 2000ms überschritten. Stellen Sie sicher, dass der Rückruf done() in diesem Test aufgerufen wird. bei null. ediaden

+0

Ich benutze Nightmare nicht. Das Problem ist wahrscheinlich, dass es einfach zu lange dauert, bis Mocha die Zeit abläuft. Ich habe meine Antwort geändert, um die Zeitüberschreitung zu erhöhen. Möglicherweise müssen Sie eine höhere Nummer verwenden. – Louis