2017-04-20 4 views
1

Wir haben einige einfache "ist das wirklich funktioniert" Chai Tests einer Elektronen-App mit Spektron und WebdriverIO. Der Beispielcode begannen wir mit ausWarum werden diese Chai-Tests nicht fehlschlagen?

https://github.com/jwood803/ElectronSpectronDemo wie in https://github.com/jwood803/ElectronSpectronDemo/issues/2 berichtet, die chai-as-versprochenen Tests sind nicht Mismatches zu kontrollieren, so dachte ich, ich würde ein paar zusätzliche Tests hinzufügen, um herauszufinden, warum Chai keine Tests versagt, wo die electron app hat einen Text, der nicht mit dem erwarteten Komponententest übereinstimmt.

Beginnen wir mit etwas beginnen, wirklich einfach, den Rest des Codes ist bei https://github.com/drjasonharrison/ElectronSpectronDemo

describe('Test Example', function() { 
    beforeEach(function (done) { 
     app.start().then(function() { done(); }); 
    }); 

    afterEach(function (done) { 
     app.stop().then(function() { done(); }); 
    }); 

    it('yes == no should fail', function() { 
     chai.expect("yes").to.equal("no"); 
    }); 

    it('yes == yes should succeed', function() { 
     chai.expect("yes").to.equal("yes"); 
    }); 

Die erste Einheit Test fehlschlägt, gelingt es der zweite.

Und wenn wir die Behauptung in eine Funktion setzen dies erkennt noch das Scheitern:

it('should fail, but succeeds!?', function() { 
    function fn() { 
     var yes = 'yes'; 
     yes.should.equal('no'); 
    }; 
    fn(); 
}); 

So, jetzt in die Welt der Elektronen, webdriverio und spectron wird der Anwendungstitel sein „Hallo Welt soll! “, so sollte dies nicht gelingen, aber es geht:

it('tests the page title', function() { 
    page.getApplicationTitle().should.eventually.equal("NO WAY"); 
}); 

Hmm, lassen sie sich versucht, einen vertrauten Test:

Output

:

✓ should fail, waitUntilWindowLoaded, yes != no 
txt = Hello World! 

Es gelingt? Was? Warum? Wie?

Antwort

1

Es gefunden! Wenn Sie https://github.com/webdriverio/webdriverio/blob/master/examples/standalone/webdriverio.with.mocha.and.chai.js

betrachten, werden Sie sehen, dass Sie das Versprechen von jedem der Tests zurückgeben müssen. Dies ist typisch für Asynchron-chai/Mokka-Tests:

it('tests the page title', function() { 
    return page.getApplicationTitle().should.eventually.equal("NO WAY"); 
}); 

Wenn Sie das tun, dann wird der chai Test tatsächlich korrekt ausgewertet.

+0

Ich denke nicht, dass webdriverio hier die Schuld ist. Das sieht nach dem Verhalten aus, das ich bei asynchronen Mocha-Tests beobachte, wenn ich vergesse, das Versprechen zurückzugeben. – Rhayene

+0

@Rhayene - richtig, ich habe versucht, über eine Bearbeitung zu klären. –

Verwandte Themen