2017-06-22 14 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

関連する問題