2016-10-13 11 views
0

私のテストの1つは、スイート全体を実行すると断続的に失敗しますが、単独で実行すると失敗しません。スイート全体を実行すると、テストが断続的に失敗するのはなぜですか?

問題を再現するバニラアプリケーションで非常に基本的なリポジトリを作成しました: https://github.com/juanazam/ember-cli-test-issue

基本的に、テキストフィールドとボタンでコンポーネントを作成しました。テキストが空の場合、ボタンは無効になります。

2つのテストで入力にfillInヘルパーを使用すると問題が発生します。あなたは、テスト1を見ることができるようにのみ入力を埋め、それを何もしない

test('test 1', function(assert) { 
    visit('/'); 

    fillIn('input[type=text]', "Algo"); 

    andThen(function() { 
    assert.equal(currentRouteName(), "index"); 
    }); 
}); 

test('test 2', function(assert) { 
    visit('/'); 

    andThen(function() { 
    assert.ok(find('input[type=submit]').is(':disabled')); 
    }); 

    fillIn('input[type=text]', "Algo"); 

    andThen(function() { 
    assert.ok(!find('input[type=submit]').is(':disabled')); 
    }); 
}); 

:ここ

はバニラアプリから撮影したテストコードです。 2番目のテストは、ボタンが無効になっているかどうかをテストします。

テスト2は、スイート全体を実行すると断続的に失敗します。 ember test -sを実行すると失敗します。ブラウザのタブを再読み込みすると(サーバプロセスを再起動せずにスイート全体を実行していれば)、パスします。同じ動作が複数の実行で発生します(1つの実行が失敗し、次の成功が実行されます)。

テストランナーが同じように動作しないため、私は回転再生のケースを作成しませんでした。あなたと

+0

どのようなバージョンのemberを使用していますか? – Keo

答えて

0

はAPP:

ember testは常に失敗します。

ember test --filter 'test 1'は常に通過します。

ember test --filter 'test 2'は、常にとなります。です。

2つのテスト機能を異なる受入れテストに分割すると、ember testは常に合格します。

0

ブラウザのQunitは、まず不合格なテストを実行しようとします。 (私は、最も面白いテストが実行されるまでの時間を短縮すると思います)。 ember -sでは、あなたのテストは常に順番に実行され、テストは失敗しています(test1はあなたの入力をすでに満たしていて、期待通りに最初は無効になっていないので、テスト2は失敗します)。

最初に失敗したテストの後にブラウザでqunitをリロードすると、失敗したtest2が最初に実行され、パスします。

https://dockyard.com/blog/2014/04/17/ember-object-self-trollもご覧ください。コンポーネント定義に問題があり、test2に予期せず入力されたことがあります。

関連する問題