2

ジャスミンとガードを使用して、Rails 3.2 アプリケーションの ember ベースのフロントエンドをテストしようとしています。このために、jasminerice と Guard-jasmine、phantomjs を使用します。セットアップは非常に簡単でシンプルで、いくつかのサンプル仕様を実行できました。残り火で遊ぶとなると、物事は狂ってしまいます。ビデオリーダークラスをテストする以下の仕様があります。loadVideo メソッドを呼び出すときに、対応するビデオ DOM 要素の値で videoHeight および videoWitdh プロパティを設定する必要があります。ブラウザで jasmine を実行するとテストに合格しますが、guard と phantomjs で実行すると失敗します。「undefined が 640 に等しいと期待する」というメッセージが表示されました。テストがphantomjsで実行されたときに、私のDOM要素が考慮されていないようです。

describe "VideoReader", ->
  it "loads video from video DOM element", ->
    videoDOM = Ember.$("<video width='640' height='480'><source src='/test.mp4'></source></video>")[0];

    player = Topper.VideoReader.create();

    player.loadVideo(videoDOM);

    videoHeight = player.get('videoHeight');
    videoWidth  = player.get('videoWidth');

    expect(videoHeight).toEqual(480);
    expect(videoWidth).toEqual(640);

私の仕様は正しく書かれていますか?

4

1 に答える 1

3

Testing in Ember.jsに関するブログ投稿を読む必要があります。

あなたがどのように見えるかはわかりませんが、Topper.VideoReaderあなたの問題はDOMで何かを操作し、Ember.jsにそれらの変更を伝播する機会を与えていないことに関係していると思います. Ember.run(function(){...})テストでは、テストで見られるように、バインディングと対話する呼び出し、または呼び出しで DOM を操作する呼び出しをラップする必要があります (例: child_views_test.js )


以下の議論からの要約:

于 2012-04-06T20:59:17.743 に答える