0

Mirage を使用して、Ember でいくつかの基本的な受け入れテストを実行しようとしています。この時点では、足を見つけるためだけに、テスト環境を設定するためにフィクスチャのみを使用しています。テスト環境で ember を実行すると (つまり、-e test を使用して)、アプリに期待されるデータが取り込まれていることがわかります。そして、DOMにはいくつかのボタンなどがあります。すべて問題ありません。

ただし、ページにアクセスしてボタンをクリックするテストを実行すると、テストでボタンが見つからないことがわかります。つまり、-e test を実行して localhost を確認すると、アプリが問題ないように見えます。しかし、localhost/tests をチェックすると、-e テスト画面に確実にあるボタンが見つからないというテストが失敗します。

ボタンが -e テスト環境に存在することを確認しました。インスペクターを使用し、コンソール ラインで基本的な jquery select を発行するだけです。

それで、セットアップまたは構成のどこかに問題があると思いますか?

特に:

module('Acceptance | basic tests', {
  beforeEach: function() {
    this.application = startApp();
  },

  afterEach: function() {
    Ember.run(this.application, 'destroy');
  }
});

test('visiting /orders', function(assert) {
  visit('/orders');

  andThen(function() {
    assert.equal(currentURL(), '/orders');
  });
});

test('visiting /basic', function(assert) {
  visit('/orders');
  click('top-row-orders-button'); //button.top-row-orders-button fails too
  andThen(function() {
    assert.equal(currentURL(), '/orders');
  });
});

最初のテスト (URL にアクセスするだけ) はパスします。2 番目のテストでは、ボタンが見つからないと表示されます。繰り返しますが、-e test を実行し、コンソールに $('.top-row-orders-button') と入力すると、問題のボタンが返されます。

誰かが必要とする情報をさらに提供していただければ幸いです。助けていただければ幸いです。私は運がないので、数日間これに頭をぶつけてきました。

追加するために編集:

より一般的には、Mirage を使用する場合、DOM が /tests 環境内にあるもの (つまり、実際のテストが実行されている DOM) を確認する方法はありますか? つまり、DOM は各 Mirage テストに対してどのように見えるのでしょうか?

4

3 に答える 3

1

クリック ヘルパー ( ) は CSS セレクターを取るため、使用したいclick('top-row-orders-button')クラスを持つ DOM ノードを探している場合top-row-orders-button

click('.top-row-orders-button');

ボタンが見つからない場合は、ヘルパーのdebugger前に a を付けて、コンソールに入力してみてください。click$('.top-row-orders-button')

意味を明確にしていただけます-e testか?通常、ブラウザーでテスト ランナーを表示する方法は 2 つあります。まず、 を完了している場合はember serve、 にアクセスできますlocalhost:4200/tests。ただし、推奨される方法は を使用することember test --serverです。これにより testem が使用され、コンソールでテスト ランナーが開始されますが、次のようなリンクも表示されます。

Open the URL below in a browser to connect.
http://localhost:7357/

テストランナーを見るためにアクセスできます。

2 番目の方法が優先される理由は、コマンドが のビルド時(ノード) 環境とのランタイム環境(つまり、 の下の環境変数)の両方でember testEmber アプリを使用するためです。のビルド時環境と のランタイム環境。testtestconfig/environment.jsember serve/testsdevelopmenttest

通常、指定する必要はありません。コマンド--environment testを使用するだけです。ember test --server

最後に、最後の質問ですが、「ミラージュ テ​​スト」などというものは実際にはありません。Mirage のサーバーは、受け入れテストで Ember アプリケーションと一緒に起動されます。しかし、Mirage は Ember アプリについて何も知りませんし、それがテストで使用されているという事実さえも知りません。基本的に、XMLHttpRequest をモックアウトして、そこで停止します。

于 2016-02-25T20:20:06.483 に答える
1

テストの本文内にデバッガー ステートメントを追加し、コンソールを開きます。テストを再実行します。

アプリを一時停止する必要があります。コンソールで、DOM を調べることができます。クロムを使用します。

$('#ember-testing')コンソールで試してください。

コンソールに DOM フラグメントが表示されます。この DOM フラグメントを操作できます。矢印をクリックして開きます。

ターゲットにしようとしている要素が html に表示されていますか? そこにある場合は、jQuery で再度選択してみてください。jQuery が見つからない場合は、セレクターが間違っています。

于 2016-02-26T00:17:42.433 に答える