UT----回调函数 和 promise angularjs + jasmine + karma
1、测试回调函数 和 promise
contextBrokerService.addOnMessageListener(function (message) {
MetaService.GetBondNameByXref(message).then(function (res) {
vm.defaultBondName = res.data;
});
}
UT
spyOn(contextBrokerService, 'addOnMessageListener').and.callFake(function(){
arguments[0]({message: 'msgValue'}) // spyOn().and.callFake(function() {arguments[0]({message: 'value'})}) 用来执行回调函数
});
spyOn(MetaService, 'GetBondNameByXref').and.returnValue(q.resolve({data: 'defaultBondName'})); // q 是注入的$q的别名, 这里不能用Promise.resolve代替
scope.$emit('GridsLoaded');
scope.$digest(); // 会把所有的异步($q的异步方法,不执行Promise的异步)方法执行完,如果有刷新页面或请求页面的请求, 用$httpBackend mock 掉。 如请求了pages/BWICColor.html.
这样去mock 解决, 一般会放在beforeEach中 $httpBackend.whenGET("pages/BWICColor.html").respond({});
done();
expect(ctrl.defaultBondName).toBe('defaultBondName');