0
ジャスミンでAngular 1アプリケーションをテストしています。私の質問は、同じbeforeEach
ステートメントで2つの別々のサービスの2つのスパイを作成することは可能ですか?beforeEachに複数のspyObjを持つことができます
今は最初のスパイを動作させることはできますが、他のスパイが動作していない理由はわかりません。私は約束がどこのグローバル変数に割り当てられているのかをスパイセットアップしています。これらの中には、どのテストでもアクセスできます。したがって、2番目の変数は、期待される約束の代わりにundefined
として返されます。ここ
はbeforeEach
内部コードを設定するサンプルである:
mockWorkingService = jasmine.createSpyObj('mockWorkingService', ['retrieve']);
mockWorkingService.retrieve.and.callFake(function(crit) {
workingServiceDfr = $q.defer(); // $q is defined globally
return workingService.promise;
});
mockFailingService = jasmine.createSpyObj('mockFailingService', ['retrieve']);
mockFailingService.retrieve.and.callFake(function(crit) {
failingServiceDfr = $q.defer();
return failingService.promise;
});
また、retrieve
は、サービスごとに個別に定義されています。
あなたはもちろん、あなたが望むほど多くのスパイを持つことができます。私たちが手助けできるようにテストがどのように設定されているかについては、もう少し具体的な文脈を提供したいと思うでしょう。 –
その他の文脈は必要でしょうか?私は問題がbeforeEachで発生していることを知っています。モジュールが定義されている場所とともに、 'describe'ブロックの中でbeforeEachの外側に定義されたグローバル変数の束があります。 – BrianRT
例として、テストでこれらのサービスをどのように呼び出していますか? "2番目の変数は単に' undefined'を返すだけです。私たちが見たい種類の情報を理解したい場合は[mcve]を参照してください。 –