問題タブ [ngmock]
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.
javascript - 単体テストで凍結された約束
通常の $q promise を返すサービスをテストしようとしたときに、奇妙なことに遭遇しました。私がテストで試した約束は、実際に解決/拒否されたことはありません (より具体的には、からのハンドラーthenは呼び出されず、約束内のコードは問題なく実行されます)。SOに関する他の回答が示唆しているように、ルートスコープでダイジェストを強制しようとしましたが、運がありませんでした。
以下は自己完結型の小さな例です。
promise を期待どおりに機能させるにはどうすればよいですか?
javascript - Angularjs ngMock は、各テストの前または各テスト ケースに挿入しますか?
シナリオ
私は現在、Angular プロジェクトのテストを書いています。私が見つけたほぼすべての記事で、次のように、テストで使用される依存関係を格納するブロックに「グローバル」変数を作成しているのを目にします。describe
テストで使用するために、サービス/ファクトリ/などの新しいインスタンスを作成して共有するため、これは非常に乾燥していることがわかりました。しかし、多くのテストを書いているとき、私はグローバルを作成し、その後それらを使用しなくなり、inject()このトレースを残す際にグローバルを削除するのを忘れていることに気づきました。これは、後で混乱を引き起こす可能性があります。
私の混乱
そのため、各テスト ケースに依存関係を注入してから、次のように小さなdescribeブロックを手に負えないグローバルにリファクタリングしました。
そして、これには、物事がローカルにとどまり、どこから来たのかを検索する必要がある変数を使用する必要がないという追加の利点があります。
質問
beforeEachブロック内ではなく、テストごとに依存関係を注入することに問題はありますか?
javascript - モック $httpBackend サービスから正しい結果を取得できません
私は機能を持っています:
そして私はそれを次のように呼びます:
createClub()Angular コントローラーから呼び出される場所。テストに行き詰まっているので、まだコントローラーを書く必要はありません。次のように、ngMocks $httpBackend を使用して応答を偽造しています。
console.log(existingClub)いつもundefined
console.log(validationResult)いつも{result: true}
私は何を間違っていますか?私は前者がそうで{_id:'1', clubName: 'ClubFoo', owner: 'foo@bar.com'}あり、後者がそうであることを期待しています{result: false, reason: 'Club already exists. Choose another Club Name'}
javascript - httpbackend を使用した ngResource のテスト - 未処理の拒否エラーの可能性
問題
Karma、Mocha、Chai、PhantomJS を使用して次のコントローラーをテストしようとしています。
IndexCtrl.js (簡略化)
index.controller.test.js (ここでも単純化します。他にも http 以外のテストがあります)
テストを実行すると、次のエラーが発生します。フラッシュ行をコメントアウトすると、このエラーはスローされませんが、正しく機能しません。
パッケージ.json
モッズノート
これはAngular 1.6.0とは異なります:エラーがフラッシュによってトリガーされず、解決策が angularjs 1.5.9 にロールバックされた「処理されていない可能性のある拒否」エラー。私はすでにangular 1.5.9にロールバックしようとしましたが、役に立ちませんでした。だから、神の愛のために、私が別のブラインドを「重複としてマーク」した場合...