3

次のコードはブラウザで機能しますが、Jasmineでテストするにはどうすればよいですか?をクリックする#openerと、jQueryダイアログボックスが表示され、ajax呼び出しを行ってコンテンツをロードする必要があります。

$ ->
  $( "#dialog" ).dialog({ autoOpen: false });
  $( "#opener" ).click ->
    $( "#dialog" ).dialog( "open" );
    $( "#dialog" ).load('/content');

spec.js.coffee:

describe "Open Dialog Box", ->
  it "gets content from server", ->
    spyOn($, "ajax")
    $('#opener').click()
    expect($.ajax.mostRecentCall.args[0]["url"]).toEqual("/content")

見る:

<div>
  <a id="opener" href="#">See Content</a>
</div>

<div id="dialog" title="Content"></div>

クリックイベントが発生していないため、ビューが読み込まれていないようです。テストのためにビューをロードする方法は?

Rails3.2.2とJasminericeでの作業。

4

2 に答える 2

3

Jasminericeを使用すると、内部spec/javascript/fixturesに配置されたテンプレートをフィクスチャとして扱うことができます。を実行する必要がありますloadFixture 'fixtureName'Jasminericeのフィクスチャドキュメントでもう少し説明されています。

と同じビューをレンダリングすることはしませんapp/views。正しく実行している場合は、フィクスチャで簡単に複製できるマイナーな構造(クラスなど)にのみ依存していることになります。次に、実際のビューがこれらの仮定に準拠していることを確認する必要がある場合は、リクエスト仕様を記述できます(残念ながら、rspecビュー仕様のデフォルトマッチャーはドキュメント構造を確認できませんが、そのためにいつでもnokogiri-fuに頼ることができます。

パーシャルがある場合は、Jasminerice::HelperMethodsいくつかのメソッド/変数を提供することに頼ることができます。

于 2012-11-12T16:51:11.190 に答える
3

jasmineはjsユニットテスト用です。domで小さなものをテストする必要がある場合、つまりプラグインが正しく機能する場合は、フィクスチャを使用しても問題ありません。Railsアプリの場合は、capybaraimoを使用することをお勧めします。

于 2012-11-13T17:45:42.910 に答える