2

これは私のテストコードです。

test("user login", function(){
  visit("/sessions/new").then(function() {
    fillIn('input[name=email]', 'test@email.com');
    fillIn('input[type=password]', '1234');
    click('button[type=submit]').then(function() {
      equal(find('.dropdown-anchor', '#ember-testing').text(), 'test@email.com', "Menu should contain email 'test@email.com'");
    });
  });
});

[送信] をクリックすると、セッションの HTTP 要求がトリガーされます。正常に完了すると、アプリ メニューが更新され、ログインしているユーザーのメール アドレスが表示されます。

ページが更新されたかどうかを確認する前に、セッション HTTP リクエストが完了するのを QUnit に待機させるにはどうすればよいですか?

更新: 解決済み

ember データ規則の外側にある新しいセッションを作成するためのカスタム メソッドがあることがわかりました。Ember.run.begin();とajax リクエストを追加するとEmber.run.end();、テストが機能し始めました。詳細については、こちらをご覧ください: http://emberjs.com/api/classes/Ember.run.html

4

1 に答える 1

2

各 ember-testing ヘルパーは、結果として生じるすべての非同期動作が完了すると満たされる promise を返します。したがって、セッションの http 要求が完了するのを待つには、次のことを試してください。

test("user login", function(){
  visit("/sessions/new").then(function() {
    return fillIn('input[name=email]', 'test@email.com');
  }).then(function() {
    return fillIn('input[type=password]', '1234');
  }).then(function() {
    return click('button[type=submit]');
  }).then(function() {
    equal(find('.dropdown-anchor', '#ember-testing').text(), 'test@email.com', "Menu should contain email 'test@email.com'");
  });
});
于 2013-09-03T00:25:56.000 に答える