我正面临一个问题,我正在为我的控制器编写测试用例。
$q.all([
staticDataService.getStaticData(viewType),
driverService.getDrivers()
]).then(function (response) {
vm.staticData = response[0];
vm.drivers = response[1].drivers;
我的测试案例是
beforeEach(inject(function ($rootScope, $q, _CONFIG_,$httpBackend, $controller) {
staticDataService = jasmine.createSpyObj('staticDataService', ['getStaticData','getDisplayRule']);
driverService = jasmine.createSpyObj('driverService',['getDrivers','setSecondaryDriverId','orderData','deleteSecondaryDriver']);
});
staticDataService.getStaticData.and.callFake(function () {
var d = q.defer();
d.resolve(resultStaticData);
return d.promise;
});
driverService.getDrivers.and.returnValue({ $promise: q.when(resultMakes) });
driverUtilityService.calculateDriverAge.and.returnValue(2);
DriversSummaryController.initialize();
$rootScope.$apply();
但是当我调试我的测试用例时,我得到响应[0]和响应[1]为未定义。 请帮我纠正这个问题。
感谢。 Sajesh
答案 0 :(得分:0)
设置间谍的语法是
spyOn(object, 'method').and.returnValue(...);
这涉及使用.and
方法的所有语句。
$q.all
在内部when
,staticDataService.getStaticData
和driverService.getDrivers
可以使用已解决的值进行模拟,而不是承诺。