4

現在、Jasmine で JS 関数をテストしようとしています。関数はタグに設定された CSS クラスをチェックするため、タグをフィクスチャでbody使用したいと考えています。<body>

setFixtures('<body class="themed someotherclass"></body>')

このスタブ化された HTML への jQuery 参照$('body')は、テスト中の JS 関数に渡されます。しかし、このbodyタグは明らかに Jasmine テスト内に実際に到着することはありません - Jasmine が body を含む独自のドキュメントを作成し、この内部にすべてのフィクスチャを配置しているように見えますdiv- 少なくともスタブ化さouterHTMLれた body 要素の をエコーすると、これが内部に表示されますボディと Jasmine 関連のインライン JS の後:

<div id="jasmine-fixtures"></div>

body をスタブしようとすると空ですが、div代わりに a を使用するといっぱいになります。

Jasmine テスト内で body タグをスタブする方法はありますか?

4

1 に答える 1

4

わかりました、私は最終的に解決策を見つけました。

Jasmine で body タグをスタブしたいときはいつでも、最初に "setFixtures()" を呼び出す必要があります - この呼び出し中に、Jasmine は独自の body タグを作成します。body タグが作成された後、たとえば jQuery を使用してそれを操作し、body タグに加えた変更に応じてテストを実行できます。

つまり、必要に応じて通常の「setFixtures(SOME HTML)」コマンドを実行します。または、テストに body タグのみが必要な場合は、テストの最初に引数なしで「setFixtures()」を呼び出します。その後、少なくとも Jasmine バージョン 1.x では、タグが使用可能になり、たとえば jQuery を使用して、必要に応じて body タグを調整/変更できます。body タグをフィクスチャとしてモックする代わりに、引数なしで「setFixtures()」を呼び出して body タグを「作成」し、必要に応じて DOM を操作します。

于 2012-08-27T10:21:58.913 に答える