6

簡単な Ember 統合テストを作成しようとしていますが、Ember.run. 誰かが私を助けてくれるなら、私はとても感謝しています。具体的には、テストがサインインして次のページのロードを開始するのを確認できますが (当然のことですが)、テストが終了するとすぐにエラーが発生します。これは 2 番目のテスト、最初のパスに関するものです (何も非同期ではないと私は信じています)。

import Ember from 'ember';
import startApp from 'jobs-tuftsdaily/tests/helpers/start-app';
import exists from 'jobs-tuftsdaily/tests/helpers/start-app';

var App;

module('Integration - Landing Page', {
    setup: function() {
        App = startApp();
    },
    teardown: function() {
       Ember.run(App, 'destroy');
    }
});

test('Should load content', function() {
  visit('/').then(function() {
    ok(exists("*"), "Found HTML!");
    ok(exists('label:eq(4)'), "Slug label on page");
  });
});

test('Should sign in test user', function() {
  Ember.run(function() {
    visit('/').andThen(function() {
      return fillIn("input[name=email]", "test@test.com");
    }).andThen(function() {
      return fillIn("input[type=password]", "password");
    }).andThen(function() {
      return click("button");
    }).andThen(function() {
      ok(1, "stupid test passed");
    });
  });
});
4

3 に答える 3

2

コンポーネントの統合テストで同じ問題が発生しました。エラーは次のとおりです。

アサーションに失敗しました: テスト モードをオンにしました。これにより、実行ループの自動実行が無効になりました。

実行時に非同期の副作用を伴うコードをラップする必要があります。

そして、統合テストの問題の理由を見つけました。次のコードでコンポーネントをレンダリングしています。

let myobject = Ember.Object.create({x:1});
this.set('param', myobject)
this.render(hbs`{{my-object param=param}}`); 

レンダリング後、myobject以下のように更新するとエラーが発生します。:

myobject.set('x',2);

残り火の実行ループ内にないためです。

この誤った呼び出しの代わりに、次のいずれかの方法で値を更新する必要があります。

this.set('param.x',2); 
//OR:
this.set('param', Ember.Object.create({x:1}); 
//OR:
Ember.run(()=>{
    Ember.set(myobject,'x',2);
});

あなたの場合: 私は試していませんが、私の意見では、visit、click、fillInなどの非同期テスト ヘルパーは、次の理由により、統合テストではなく受け入れテストで使用できます。

于 2016-04-28T07:29:56.377 に答える
1

Ember.runテストコードではなくアプリケーションのコードであるため、発生しているエラーは発生していないため、テストをラップしても役に立ちません。サインイン ルートでは、いくつかの非同期リクエスト (AJAX などsetTimeout) を実行する必要があり、それらのハンドラーでは、いくつかの Ember API 実行 (設定、遷移など) を実行する必要があります。

それについて正確なヘルプが必要な場合は、コードをルート/コントローラーに投稿する必要があります。

私は最近、ここからダウンロードできる自動実行メカニズムを含む、Run Loop に関する電子ブックを発行しました。

于 2015-09-16T12:17:06.713 に答える