問題タブ [jasmine-jquery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - Jasmine-Jquery と Jasmine 2.0 の互換性
jasmine-jquery プラグインを使用して Jquery テストを実行できません。これが私が取ったステップです:
- gem インストール ジャスミン
- ジャスミン初期
- jquery と jasmine-jquery をヘルパー フォルダーに追加します。
- ここに私のリポジトリがありますhttps://github.com/shenst1/jasminesample
これらのチュートリアルに従って推奨される私の仕様は次のとおりです: https://www.youtube.com/watch?v=3Huh44nsZTw
最初の仕様は期待どおりに合格しますが、jquery を使用した 2 番目の仕様は次のエラーで失敗します。
jquery マッチャーが正しく読み込まれていないようです。HTML要素をチェックするのではなく、オブジェクトを文字列に変換しているようです。Support Jasmine v2.0 (バージョン 1.5.92) の jasmine-jquery.js バージョンを使用しようとしましたが、同じエラーで失敗しました。Jquery をサポートするために jasmine のバージョンをロールバックする必要がありますか、それとも jquery で動作させる方法について何か不足していますか? ありがとう、アンドリュー
javascript - ジャスミンのネストされた記述ブロックの乾燥
ジャスミンを使用していくつかのビュー コードをテストしようとしています。ビュー オブジェクトがさまざまな包括的状態にあるときに、特定の要素の存在をテストする必要があります。状態ごとに多くのコードを繰り返す必要はありません。
ユーザーがこのノードをいくつかの線で他のノードに接続できるようにするために、いくつかのエンドポイントを持つノードを表すクラス NodeView を取得しました。各ノードは列 (グループ) に配置されるため、このノードが最初のグループに配置されると、左端点は表示されません。ノードが最後のグループにある場合、正しいエンドポイントは表示されません。ジャスミンでネストされた記述ブロックを使用して、この状況を管理できます。
これまでのところ、すべて問題ありません。問題は、他に異なる状態があるときに始まります。この場合、この状態は入力を許可します。これは、ユーザーが線を描画できるかどうかを示すブール値です。このブール値が true の場合、ノードには「入力」クラスが含まれている必要があります。コードは次のとおりです(レンダリング関数を再度):
さて、ノードを作成するときに生成された html マークアップをテストしていますが (render メソッドを明示的に呼び出していません)、これは内部で行われます。Render は、オブジェクトが構築されるときに呼び出されます (コンストラクターが render を呼び出します)。そのため、コードで明示的に node.render() を呼び出していません。
これらのさまざまな状態をテストするには、考えられるすべての状況をテストに含める必要があります。
- 最初のグループ - 入力
- 最後のグループ - 入力
- 最初のグループ - 入力なし
- 最後のグループ - 入力なし
別のブール値の状態を追加すると、8 つのシナリオが作成されます。共有された例http://pivotallabs.com/drying-up-jasmine-specs-with-shared-behavior/を使用して、少しきれいにしようとしました
入力状態のテストは入力状態を設定せずに行われるため、上記の行は期待どおりに機能しません。したがって、実際にテストしているのは次のとおりです。
- グループとは独立して入力および入力なし
- 入力テストケースを含まず、model.input 属性を含む最初と最後のグループ
これは実際には 4 つのケースすべてをテストしているわけではありません。
指数関数的に繰り返されるコードを回避するためにこれを改善する方法についてのアイデアはありますか?
どうもありがとう。
javascript - AngularJS ディレクティブ テンプレートの要素で focus() をテストする
次のディレクティブが与えられた場合
フォーカス ウォッチャーがブラウザーで動作することをテストしましたが、単体テストでトリガーできるようにしたいと考えています。これは私が試したものですが、うまくいきません。
検索呼び出しで入力ボックスに正しく到達していることがわかります。そのコードが入力ボックスでフォーカス イベントをトリガーすることを期待しますが、何も起こりません。ここで何が欠けていますか?
javascript - dom の角度要素でイベントスパイを使用するにはどうすればよいですか?
設定
ここでは、要素を作成、コンパイル、リンク、および追加してから、イベント スパイを設定しています。
初期テスト
これらは、要素が存在すること、DOM 内にあること、および可視であることを渡し、確認します。
イベントスパイテスト
私は何を間違っていますか?これらのイベント スパイが、クリックがトリガーされていないと言っているのはなぜですか。
追加情報
element.bind('click', ...
テスト中のディレクティブにセットアップがあり、クリックイベントをシミュレートするときに起動する内部を追加しましたconsole.log
。
angularjs - jasmine-jquery イベントスパイの一貫性がないのはなぜですか?
同じテスト ケースを 2 回目に実行すると失敗するのはなぜですか?
設定
ケース1
最初のケースは期待どおりに機能します。
ケース 2 (ケース 1 と同じ)
ケースが最初のケースの正確なコピーであっても、2 番目のアサーションは何らかの理由で失敗します。
javascript - JavaScript テスト ケースの BeforeAll および AfterAll
すべてのテストの前に何かをしたいのですが、その後ですか? コードを整理する最良の方法は何ですか? 例: いくつかの変数をバックアップする -> それらをクリアする -> 何かをテストする -> バックアップを復元する。「beforeEach」と「afterEach」は高すぎます。ありがとう!
jasmine - Jasmine-jquery loadFixtures with Jasmine 2.0 が機能しない
これをデバッグするのに約1日を費やしましたが、途方に暮れています。jasmine-jquery 2.0.2 で何かが機能していないようです。
Jasmine 1.3.1 および jasmine-jquery 1.5 から最新バージョンに更新しています。フィクスチャのロード方法によっては、さまざまなエラーが発生します。jasmine-jquery を微調整して ajax.fail() メソッドにパラメーターを提供した後、「Fixture could not be loaded: ./ExposureWorksheetFixture.html (status: parsererror, message: Invalid XML」が表示されます。
私が持っているもう 1 つの効果は、サンプルのジャスミン ランナーを微調整してテストすると、「フィクスチャがゼロ、失敗がゼロ」と表示されることです。これは、jasmine-jquery、jquery 1.10.2 を参照し、フィクスチャを設定しようとすると発生します。操作を削除すると(ただし、参照は残します)、サンプルは機能します。
フィクスチャをロードしようとしたときに発生する別のエラーは、「(ステータス: エラー、メッセージ: 制限付き URI へのアクセスが拒否されました)」です。これは、割り当てられた場所にあるファイルを実際にロードしようとしたときに発生するようです。ファイルをロードするために実際のWebサーバーが必要なjqueryを指摘する別の質問を見ました.ローカルファイルパスは好きではありませんが、これらのライブラリの古いバージョンではこの問題はありません. これは Firefox で発生します。IE 8 ではがTypeError: Object doesn't support this property or method
表示されます。Firefox では が表示されますError: Fixture could not be loaded: spec/javascripts/fixtures/fixture.html (status: error, message: A network error occurred.)
。
ここにいくつかのサンプルコードがあります...
PlayerSpec.js で:
SpecRunner.html で、jquery と jasmine-jquery への追加の参照に注意してください。
ランナーの出力 (最初のテスト - すべてのテストが失敗)
Edit 2/13/14 @ 8:32pm est: jasmine-jquery のみを更新しようとしましたが、それを行うとすべてが見事に失敗します (Jasmine 1.31)。私は、このライブラリで何かが起こっているに違いないと考えています:(
javascript - Jasmine 2.0 を使用した最初の ajax リクエストのテスト結果
Jasmine 2.0 でバックボーン ビューをテストしています。ビューは、ロード時に最初の ajax リクエストを作成して、フォーム フィールドに値を入力します。it
これらの値が受信された後にのみ、Jasmine テスト (以下の関数内) を実行したいと考えています。
ajax リクエストをスタブしているにもかかわらず、テストの実行後に ajax リクエストが受信されたように見えるため、現在、テストは失敗しています。
このテストはどのように記述すればよいですか?