2017-04-20 95 views
1

我們有一些簡單的「這是真正的工作」柴電子應用使用spectron和WebdriverIO測試。我們開始與示例代碼是從爲什麼這些柴測試不會失敗?

https://github.com/jwood803/ElectronSpectronDemohttps://github.com/jwood803/ElectronSpectronDemo/issues/2報道,薛寶釵,作爲許諾的測試沒有捕錯配,所以我想我會添加一些額外的測試,以找出原因柴沒有失敗的測試,其中電子應用程序的文本與預期的單元測試文本不符。

讓我們先從很簡單的東西,代碼的其餘部分是在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"); 
    }); 

第一單元測試失敗,第二次成功。

而當我們把斷言成一個函數,這仍然檢測到故障:

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

所以現在到電子,webdriverio和SPECTRON的世界裏,應用程序標題應該是「世界,你好! 」,所以這應該會失敗,但它傳遞:

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

嗯,讓我們嘗試一個更熟悉的測試:

輸出:

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

它成功了嗎?什麼?爲什麼?怎麼樣?

回答

1

找到了!如果你看看https://github.com/webdriverio/webdriverio/blob/master/examples/standalone/webdriverio.with.mocha.and.chai.js

你會看到你需要從每個測試中返回承諾。這是典型的異步柴/摩卡測試:

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

如果你這樣做,那麼薛寶釵測試確實是正確的評估。

+0

我不認爲webdriverio在這裏有問題。這看起來像我在異步摩卡測試中觀察到的行爲,當我忘記返回承諾時。 – Rhayene

+0

@Rhayene - 正確的,我試圖通過編輯來澄清。 –