2015-10-05 16 views
0

我面临一个问题,我正在为我的控制器编写测试用例。

$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

是使用茉莉花2.0 –

回答

0

设立间谍语法

spyOn(object, 'method').and.returnValue(...); 

这涉及使用.and方法中的所有语句。

$q.all确实when内部,所以staticDataService.getStaticDatadriverService.getDrivers可以与他们的解决值,而不是承诺被嘲笑。

+0

我已经这样做beforeEach。 driverService = jasmine.createSpyObj('driverService',['getDrivers','setSecondaryDriverId','orderData','deleteSecondaryDriver']);我们可以使用staticDataService = jasmine.createSpyObj('staticDataService',['getStaticData','getDisplayRule']); –

+0

然后它看起来很好。它看起来像你没有发布所有相关的代码,发布的代码不包含造成这种错误。摆脱不必要的承诺,并检查resultStaticData和resultMakes有什么问题,尝试在plunker中重新创建问题,如果它不起作用。 – estus