2016-11-17 10 views
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は、サービスごとに個別に定義されています。

+0

あなたはもちろん、あなたが望むほど多くのスパイを持つことができます。私たちが手助けできるようにテストがどのように設定されているかについては、もう少し具体的な文脈を提供したいと思うでしょう。 –

+0

その他の文脈は必要でしょうか?私は問題がbeforeEachで発生していることを知っています。モジュールが定義されている場所とともに、 'describe'ブロックの中でbeforeEachの外側に定義されたグローバル変数の束があります。 – BrianRT

+0

例として、テストでこれらのサービスをどのように呼び出していますか? "2番目の変数は単に' undefined'を返すだけです。私たちが見たい種類の情報を理解したい場合は[mcve]を参照してください。 –

答えて

0

短い答えは「はい」です。beforeEachの文で複数のスパイを持つことができます。

関連する問題