如何测试使用promise的AngularJS组件?
我想对以下组件进行单元测试如何测试使用promise的AngularJS组件?,angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,我想对以下组件进行单元测试 myApp.component('myComponent', { controller: function($q) { let serviceDummy = $q((resolve, reject) => resolve(42)); this.number = 0; this.$onInit = () => { serviceDummy.then((res) => {this.number = res; });
myApp.component('myComponent', {
controller: function($q) {
let serviceDummy = $q((resolve, reject) => resolve(42));
this.number = 0;
this.$onInit = () => {
serviceDummy.then((res) => {this.number = res; });
serviceDummy.then(console.log);
}
},
template: '<p>The answer is {{$ctrl.number}}</p>'
});
该组件工作正常,但测试失败。
首先返回被测函数创建的承诺
this.$onInit = () => {
//vvvv RETURN promise
return serviceDummy.then((res) => {this.number = res; });
}
然后使用Jasmine提供的Thendone
函数作为it
方法的测试处理程序的参数:
it('should set the number to 42', function testHandler(done) {
var p = controller.$onInit();
p.then(function() {
expect(controller.number).toBe(42);
done();
});
_rootScope.$apply();
});
在expect之前添加$rootScope.$digest()
it('should set the number to 42', function testHandler(done) {
var p = controller.$onInit();
p.then(function() {
expect(controller.number).toBe(42);
done();
});
_rootScope.$apply();
});