你可以有多个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
单独为每个服务定义。
答
简短回答是“是”,您可以在beforeEach
报表中有多个间谍。
你当然可以拥有尽可能多的间谍。您需要提供更多关于您的测试如何为我们提供帮助的背景。 –
还有什么其他的背景?我知道问题出现在beforeEach,而且那里没有其他的东西。在'describe'块的beforeEach之外定义了一些全局变量,以及定义模块的位置。 – BrianRT
一个例子是,你如何在测试中调用这些服务?你在看到哪行代码“第二个变量刚刚返回'undefined'”?如果您想了解我们希望看到的信息种类,请参阅[mcve]。 –