問題タブ [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.

0 投票する
1 に答える
2293 参照

javascript - $httpBackend で spyon を使用した Jasmine テストが機能しない

$httpを使用するメソッドでspyonを使用して、JavaScriptでジャスミンテストを作成しようとしています。私は $httpBackend を使用してこれを嘲笑しましたが、残念ながらスパイは、メソッドが実際に $http の使用後に呼び出されたという事実を認識していないようです。デバッグで呼び出されていることがわかるので、呼び出されていないと報告する理由がわかりません。スコープの使用に問題があるのではないでしょうか? または $httpBackend.flush\verify の順序 ?:

テスト対象のコード

テスト設定

作業テスト:

動作しないテスト (ただし、count-0 を返すが呼び出される)

0 投票する
1 に答える
2283 参照

angularjs - Angular プロバイダーのファクトリ メソッドをスパイする方法は?

Jasmine では、spyOn(object, 'function') を実行できます。「provider()」として使用されるプロバイダーをスパイしようとしています。それをスパイする方法は?

プロバイダーは次のようになります。

コントローラーでは、次のように使用されます。

object.method() の場合、spyOn(object, 'method') を実行できます。provider() はどうですか?

私はグーグルで検索しましたが、役立つものは何も見つかりません。spyOn(provider)を試してみたのですが、「undefined()メソッドが存在しません」というエラーが出ました。

プロバイダーをモックしようとさえしましたが、成功しませんでした。( http://www.sitepoint.com/mocking-dependencies-angularjs-tests/ )

0 投票する
2 に答える
9347 参照

javascript - spyOn: スパイを期待していましたが、Function を取得しました

Jasmine フレームワークを使用して Javascript テストを作成しています。spyOn()メソッドを使用して、特定の関数が呼び出されたことを確認しようとしています。ここに私のコードがあります

しかし、私は

スパイを期待したが、機能を得た

エラー。行を削除しようとしspyOn(text, "match");ましたが、同じエラーが発生しましたspyOn()。機能が機能していないようです。何か考えはありますか?

0 投票する
1 に答える
8936 参照

angularjs - Angularjs: 単体テスト用に spyOn を使用して location.path() をモックする

私はすでにこの投稿(および他の投稿) を読みましたが、この単純な単体テストを機能させることができません。Jasmineのバージョン2を使用しています。私の工場はとてもシンプルです:

そして、私の単体テストは同じくらい簡単です:

これはテストに合格しません( false が「ホーム」になるとエラーが発生します)。

私が間違っていることは何ですか?spyOn が呼び出されたことを確認する方法はありますか (1 回だけ)?

0 投票する
0 に答える
873 参照

angularjs - Jasmine を使用した angularJs の単体テスト: 無限再帰関数のモック

Jasmine次のように、コントローラーの作成時に呼び出す無限再帰関数を備えたコントローラーで単体テストを試みています。

しかし、単体テスト用に以下のコードのようにこのコントローラーを挿入することはできません。そうしないと、このエラーが発生します。

関数をモックする方法は他にありませんが、コントローラーのインジェクションの前に関数を定義するとupdateInfo() method does not exis、コントローラーがまだインジェクトされていないため、エラー ( t) が発生します。

次のように、関数 updateInfo() を spyOn でモックしようとします。

基本的なものが欠けています(ジャスミンは初めてです)?どうすればよいですか?

0 投票する
0 に答える
364 参照

javascript - jasmine / spyOn を使用して、特定のメソッドが渡された場合にのみメソッドをモックする

Jasmine .spyOn()特定のパラメータが特定の値である場合にのみ基づいて、を使用してメソッドをモックすることは可能ですか? 基本的に、それが渡された場合はテストユーザーを送信し、それ以外の場合は null を送信するGetUserようにモックしたいメソッドがあるとします。username = 'test'いくつかのテスト偽コードは次のようになります。

これは、次のように C# / Moq と同等です。

を使用したカスタム コーディングでこれを実行できることはわかっていますがand.callFake、かなり面倒です。実際に動作するテスト コードは次のようになります。

0 投票する
1 に答える
345 参照

javascript - ノードジャスミンのクラスメソッドをスパイする方法は?

モジュール User があります-次のように:

クラス メソッドを使用する関数:

ジャスミンのテストがあります -

基本的に、ユーザー クラス メソッドをスタブ化しfindByUsername、独自の結果、つまり nul エラーとユーザー (検索が成功したかのように) でコールバックを偽造したいと考えています。

アプリの多くの「クラス」メソッドにスパイがあり、この問題はありません。これは私を少し困惑させています。エラーは、スパイに追加.and.callThroughまたは.and.callFakeスパイに追加したときにのみ表示されます..これを削除した瞬間、テストはタイムアウトします.スパイが機能し、非同期ウォーターフォールが続行するために必要なコールバックを呼び出さないため、これは理にかなっています.

私が得ているエラーは -

エラーメッセージ