0

Mocha と WebDriver を使用して Web アプリをテストしています。モカのテスト順序とドライバーの永続的な状態に関するベスト プラクティスに苦労しています。

テストを異なるファイルに分けたい、例えば

テスト\
    index.js
    セレン\
        login.js
        search.js

したがって、実行に関しては、login.js がアプリにログインして認証されるため、login.js を最初にする必要があります。その後でのみ、search.js を実行できます。しかし、どのように?login.js では、次のようになりました。

webdriverjs = require('webdriverjs');

describe 'UI/Selenium', ->
    client = {}

    before ->
        client = webdriverjs.remote
            desiredCapabilities:
                browserName: 'chrome'

        client.init()
        client.windowHandleSize({width: 1920, height: 1080})

    it 'should let us login', (done) ->
        client.url('http://127.0.0.1:1337/login')
        .setValue('#username', 'username')
        .setValue('#password', 'password')
        .buttonClick('button[type="submit"]')
        .waitFor '#search_results_user', 5000, (err) -> throw err if err
        .call done

毎回再初期化することなく、クライアントの状態を他のテストに永続化するにはどうすればよいですか? また、Mocha でファイルの実行順序を定義するにはどうすればよいですか?

4

1 に答える 1

0

毎回再初期化することなく、クライアントの状態を他のテストに永続化するにはどうすればよいですか?

フック内のテスト間で共有したいものは何でもセットアップしますbefore(そしてそれをフック内で破棄しafterます)。beforeこれは、フックにログインするためにテスト内のコードを移動することを意味します。「foo」ビューをテストしていると仮定すると、次のことができます。

describe("foo view", function () {
    before(function () { /* create selenium driver */ });

    describe("when used by a logged in user", function () {
        before(function () { /* log in */ });

        it(...

        it(...

        after(function () { /* log out */ });
    });

    describe("when used by a logged out user", function () {
        it(...

        it(...
    });
    after(function () { /* shut down the driver */ });
});

また、Mocha でファイルの実行順序を定義するにはどうすればよいですか?

Mocha テストは相互に依存してはならず、したがって、実行される順序に依存してはなりません。

この基本ルールを破らなければならない状況にある場合は、コマンド ラインからテスト ファイルのリストを指定して、必要な順序で Mocha を呼び出すことができます。または、プログラムで Mocha を起動addFileし、ファイルを順番に追加するために使用することもできます。

于 2014-04-30T10:45:21.397 に答える