Javascript:使用sinon在单元测试用例中模拟http调用

时间:2016-08-17 09:37:51

标签: angularjs unit-testing sinon chai

我有服务resolvePromise方法,它返回promise。

resolvePromise() {
return this.$http.get('report-folder.json');

}

从我的控制器我调用resolvePromise服务方法

leftNavService.resolvePromise().then((response) => {
  this.itemList= _.map(response.data, 'folderName');
}).catch(function (e) {
  throw e;
});

我正在使用mocha-chai和sinon来编写单元测试用例。以下是我的测试用例。 即使我模拟服务调用,也无法从控制器执行代码。基本上我需要在promise中测试控制器的逻辑。任何帮助将不胜感激。

 beforeEach(inject((_$rootScope_,  _$q_ , _$sessionStorage_) => {
$rootScope = _$rootScope_;
$q= _$q_;
$sessionStorage=_$sessionStorage_;
leftNavService = new LeftNavService('',$sessionStorage);
makeController = () => {
  return new leftnavController(leftNavService);
};
deferred = $q.defer();
promise = deferred.promise;
test=sinon.stub(leftNavService, 'resolvePromise').returns(promise);
deferred.resolve({jsonData});

}));

     it('should have assigned itemList', () => {

      sinon.assert.calledOnce(test);
      controller.initialize();
      console.log('Tester '+ controller.itemList);
assert.equal(controller.itemList, jsonData);
    });

初始化方法的“itemList”中应该有响应值,因为我正在编写这个测试用例。基本上我想测试承诺中的逻辑。

0 个答案:

没有答案