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
單獨爲每個服務定義。
你當然可以擁有儘可能多的間諜。您需要提供更多關於您的測試如何爲我們提供幫助的背景。 –
還有什麼其他的背景?我知道問題出現在beforeEach,而且那裏沒有其他的東西。在'describe'塊的beforeEach之外定義了一些全局變量,以及定義模塊的位置。 – BrianRT
一個例子是,你如何在測試中調用這些服務?你在看到哪行代碼「第二個變量剛剛返回'undefined'」?如果您想了解我們希望看到的信息種類,請參閱[mcve]。 –