你可以有多个spyObjs beforeEach

问题描述:

我正在用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]。 –

简短回答是“是”,您可以在beforeEach报表中有多个间谍。