你能在beforeEach中拥有多个spyObjs吗?

时间:2016-11-17 18:32:51

标签: javascript angularjs unit-testing jasmine promise

我正在使用Jasmine测试Angular 1应用程序。我的问题是,是否可以在同一beforeEach声明中为两个单独的服务创建两个间谍?

现在我可以让第一个间谍工作,但我不确定为什么其他间谍不起作用。我有间谍设置,将promise分配给它们内部的全局变量,可以在任何测试中访问。所以,第二个变量只是返回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是为每项服务单独定义的。

1 个答案:

答案 0 :(得分:0)

简短回答是“是”,你可以在beforeEach陈述中有多个间谍。