私はすでにどこでも見ましたが、私の特定のケースではまだ解決策を見つけることができませんでした.
単体テストには angular 1.5 と Karma/Jasmine セットアップを使用しています。最初のソース コードでは、コントローラーで ES2017 async/await を使用しました。最後に $digest の $apply を手動で追加する限り、それはうまくいくように見えました。たとえば、次のようになります。
async function loadData() {
try {
vm.isLoading = true;
vm.data = await DataService.getData();
$scope.$apply();
}
catch (ex) {
vm.isLoading = false;
}
}
この特定の関数の自動テストを作成するために、DataService.getData を Jasmine の .xml でモックしてみましたspyOn。だから、私はこのようなことをしました:
spyOn(DataService, 'getData').and.returnValue($q.when(fakeResult));
スパイの追加は機能しましたが、テストを実行すると、コードが攻撃されて解決されないようfakeResultです。テスト自体に $digest/$apply を追加しようとしましたが、修正できませんでした。私も色々調べましたが、未だによくわかりません。
誰かが手がかりを持っていますか?
編集:promiseで同じメソッドをテストしても$qうまくいきますが、本当にasync/awaitを使いたいです...