2017-06-22 36 views
0

我使用CodeceptJS編寫了以下驗收測試套件,並且工作正常。我正在使用Before在每個步驟之前登錄。問題是,Before功能相當於摩卡的beforeEach,不是摩卡的before,什麼我真的是有一些代碼只運行一次,因爲這個登錄步驟,需要花費一些時間才能完成。在驗收測試前運行設置一次

我希望最終能夠運行一次並從javascript獲得loginToken,然後在每次測試之前使用Before函數進行設置。如何做到這一點的任何線索?

Feature('Top level-routes'); 

Before((I) => { 
    const loginBtnText = 'LOG IN'; 

    I.amOnPage('/login'); 
    I.fillField('username', 'root'); 
    I.fillField('password', 'mypass'); 
    I.see(loginBtnText); 
    I.seeElementInDOM('[name=loginBtn]'); 
    I.click('loginBtn'); 

    // I don't understand why I need to wait for the click to register 
    // but nothing happens unless I do ... 
    I.wait(1); 
    I.dontSee(loginBtnText); 
}); 

Scenario('a page to add a new encounter should be rendered', (I) => { 
    I.amOnPage('/encounter/new'); 
    I.wait(2); 
    I.see('First'); 
    I.see('Last'); 
}); 

Scenario('a page to add a new user should be rendered', (I) => { 
    I.amOnPage('/user/new'); 
    I.wait(2); 
    I.see('Personalia'); 
}) 

P.S.我意識到我可能使用一些外部狀態來檢查這個函數是否已經運行過,但還沒有做到。道具最少哈克答案:)

回答

0

你可以有一個自定義CodeceptJS幫手,還有你可以利用這些下面的方法,

_init - 所有測試前, _before - 測試前

編號:http://codecept.io/helpers/

+0

謝謝,這是一個非常簡單的答案,但我需要什麼,所以也得到了答案。 – oligofren

相關問題