問題タブ [spyon]
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.
angularjs - Jasmine 2 の spyOn を使用して Angular ディレクティブをテストする
Jasmine 2 でテストしようとしている AngularJS ディレクティブがあります。テストの最初に定義したモック サービスを次に示します。
そして、ここに私のテストがあります:
最初の期待 (Note.getNotes が呼び出されることを期待する場所) を削除すると、テストに合格します。そうしないと、失敗します。ただし、console.log に出力されているため、サービスが呼び出されていることがわかります。
私の推測では、メソッドに引数があることを示すために、spyOn を変更する必要があります。
javascript - ジャスミンでangular.extend関数をスパイする方法は?
私のコードは以下の通りです:
タブを切り替えることができるかどうかをジャスミンを使用して確認したい..基本的に、クエリタブタブの「refreshFunc」をスパイしたかった..どうすればよいですか?
jasmine テスト ケースで以下の構文を使用してスパイすることができません。var queriesFunc = spyOn(scope.queriesTab,'refreshFunc');
javascript - ジャスミンを使用してAngularjsでコントローラーが機能するかどうかをテストする
メソッド コントローラをテストしようとすると、いくつかの問題が発生します。だから、ここにcontactCtrlという名前の私のコントローラーがあります
これが私のcontactRepositoryです
そして、ここに contactCtrl.spec.js という名前の私の仕様ファイルがあります
save メソッドを実行したときに実際に機能するかどうかをテストしたいと思います。
angularjs - Jasmine でサービスをモックして呼び出す
AngularJS プロジェクトでサービスをテストしようとしています。私がやろうとしているのは、サービスのメソッドが呼び出されたかどうかを確認することだけです。ジャスミンで「and.callThrough()」を使用すると、メソッドが呼び出され、呼び出されたかどうかを確認できると思いました。ただし、関数カルマをテストすると、「getArtists のスパイが呼び出されることが予想されます」という応答が返されます。
});
これが機能しない理由についてのアイデアは大歓迎です。
unit-testing - SpyOn は期待されるスパイを返しますが、関数を取得しました
spyOn を使用してリダイレクトするために、(goToPage 関数を介して) サービスを呼び出すコントローラーをテストしています。シンプルですが、「スパイを期待したが、機能を得た」と出ています。エラー。私は何を間違っていますか?これは私の仕様です:
});
javascript - jasmine javascript spyon オブジェクト インスタンス
したがって、ジャスミンテストを構築しようとしているこのJSプロトタイプ(クラス)があり、これらのテストを機能させる方法を理解できないようです。
クラスの重要な部分は次のとおりです。
そして私が書いているテスト:
テストを実行するExpected spy display_date to have been called.
と、実際のメソッドが呼び出されているにもかかわらず取得されます。私がスパイしているのはCalendar
、私が初期化したインスタンスではないということはわかっていますが、その方法や理由はわかりません。
誰でも私にできる助けをいただければ幸いです。
jasmine - Jasmine を使用して (別の) クロージャー内の関数を「spyOn」する
Browserifyを使用しているrequire
ため、単機能モジュールは次のようにインポートされます。
次のように使用します。
その loadJson 関数を使いたいのspyOn
ですが、それは不可能のようです。
これはグローバル関数ではないため、これは機能しません。
これはローカル関数ではないため、これは機能しません。
モジュールを Jasmine 仕様に入れるとrequire
、関数はそのクロージャ内に表示されますが、実際に使用している他のモジュールと同じクロージャではありませんloadJson
。
要するに、この場合はおそらく使用できないと思いますspyOn
-それは正しいですか? クリエイティブな回避策はありますか?
javascript - Angular Jasmine SpyOn $resource ハンドル エラー
を使用する AngularJS サービスを単体テストしようとしています$resource
。$resource
それを分離しておくために、Jasmine の spyOn と spyのメソッドを使用したいと思いquery()
ます。query()
私のコントローラーでは、を呼び出さずに、成功関数とエラー関数をクエリ メソッドに直接渡す短い形式を使用できるようにしたいと考えています$promise.then(success, error)
。これは可能ですか、それとも長い形式で立ち往生していquery().$promise.then(success, error)
ますか?
これは、私の問題を説明する失敗したテストで作成したプランカーです: http://plnkr.co/edit/hVc2YNnwUDNv7IHODOMD?p=preview
問題を解決すると主張する SO に関するいくつかの質問を見つけましたが、すべて私が使用しているコンポーネントのはるかに古いバージョンを使用しています。plunker から、Angular 1.5.2 と Jasmine 2.4.1 で作業していることがわかります。
関連する質問として、多くのチュートリアルでは、コントローラーで戻り値をquery()
配列に割り当てることができ、データが読み込まれると配列が更新されることが示されています。これは最もクリーンなソリューションですが、エラーが発生した場合はどうなるでしょうか? データの読み込みに問題がある場合は、デフォルトのエラー通知が表示されるか、何も起こらないと思います。インターセプターを介して他の場所でエラーを処理し、イベントを発生させて、一般的な非コントローラー固有の方法でユーザーに通知することをお勧めしますか? その場合、インターセプターは、「一部のリクエストが 500 を返した」ではなく、「ベーグルの読み込みに通常より時間がかかっているようです。ここをクリックして再試行してください」など、コンテキストを提供するためにユーザーに表示するメッセージを決定する何らかの方法が必要になると思います。ステータスコード」