2

またはのような新しい Ember テスト ヘルパーを使用するために、テストをどのようにセットアップしますvisitfind。私はそれを機能させるのに少し苦労しています。

私は次のことを試しました:

名前空間を作成する前に: Ember.testing = true

私の仕様では:

App.setupForTesting()

App.injectTestHelpers()

次に、非同期コードを Ember.run でラップする必要があるというメッセージが表示されたので、そうしましたが、フィクスチャ データ (GET 要求をモックする) にアクセスできないため、データを設定できません。

あなたはそれを理解しましたか?

4

1 に答える 1

4

RC5 を使用していると仮定します (わずかなバグがあるため、まだ RC6 ではありません)。

document.write('<div id="ember-testing-container"><div id="ember-testing"></div></div>');

Ember.testing = true;

App.rootElement = '#ember-testing';
App.setupForTesting();
App.injectTestHelpers();

function exists(selector) {
    return !!find(selector).length;
}

function stubEndpointForHttpRequest(url, json) {
    $.mockjax({
        url: url,
        dataType: 'json',
        responseText: json
    });
}

$.mockjaxSettings.logging = false;
$.mockjaxSettings.responseTime = 0;

次に、次のようにテストを記述します

module('integration tests', {
    setup: function() {
        App.reset();
        App.Person.people = [];
    },
    teardown: function() {
        $.mockjaxClear();
    }
});

test('ajax response with 2 people yields table with 2 rows', function() {
    var json = [{firstName: "x", lastName: "y"}, {firstName: "h", lastName: "z"}];
    stubEndpointForHttpRequest('/api/people', json);
    visit("/").then(function() {
        var rows = find("table tr").length;
        equal(rows, 2, rows);
    });
});

上記の統合ヘルパーといくつかの基本的な統合テスト (karma / qunit / jquery-mockjax を使用) を追加する方法を示す完全なサンプル プロジェクトを次に示します。

https://github.com/toranb/ember-testing-example

于 2013-07-16T11:22:50.697 に答える