我有服务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”中应该有响应值,因为我正在编写这个测试用例。基本上我想测试承诺中的逻辑。