3

私はsinonクロックの助けを借りてemberでユニットレベルのテストを書くことに成功しましたが、受け入れテストは常に問題のようです.

たとえば、私のルートでは、何かをする前に 5 秒待つつもりです。

export default Ember.Route.extend({
    model: function() {
        setTimeout(Ember.run.bind(this, function() {
            //after the timeout do something like transition to another route
        }), 5000);
    }
});

残り火のテストでは、単純な訪問を行い、currentURL() が適切であることをアサートしてから、時計を実行します。

sinon と ember の実行ループはうまく連携していないように見えますが、このようなタイマーを高レベルでテストするために他の人が何を使用しているかに興味があります (非単体テスト/セレンまたはスリープハックなし)。

後で実行する必要がある場合、以下の (間違った) テストをどのように修正して clock.tick で動作させますか?

test("sinon and ember play nice", function(assert) {
    var clock = sinon.useFakeTimers();
    visit("/");
    andThen(function() {
        assert.equal(currentURL(), "/");
    });
    clock.tick(5001);
    andThen(function() {
        assert.equal(currentURL(), "/the-transition-url");
    });
});
4

1 に答える 1