2016-11-17 78 views
0

我正在用Jasmine測試一個Angular 1應用程序。我的問題是,是否可以在同一個beforeEach聲明中爲兩個單獨的服務創建兩個間諜?你可以有多個spyObjs beforeEach

現在我可以讓第一個間諜工作,但我不知道爲什麼其他間諜不工作。我將間諜設置爲承諾分配給其中的全局變量的位置,這些變量可以在任何測試中訪問。所以,第二個變量只是作爲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

一個例子是,你如何在測試中調用這些服務?你在看到哪行代碼「第二個變量剛剛返回'undefined'」?如果您想了解我們希望看到的信息種類,請參閱[mcve]。 –

回答

0

簡短回答是「是」,您可以在beforeEach報表中有多個間諜。

相關問題