我有一个测试,创建一个像这样的控制器......
this.createScope = function(scope) {
if (scope) {
this.scope = scope;
} else {
this.scope = $rootScope.$new();
}
this.controller = $controller("menuController", {
"$scope": this.scope,
updateActionList: function() {
return {
finally: function() {}
};
}
});
};
我添加了这部分......
updateActionList: function() {
return {
finally: function() {}
};
}
因为当我运行我的测试时,所有这些都失败了,因为....
TypeError: undefined is not an object (evaluating 'updateActionList().finally')
updateActionList()是一个本地函数,在这样的实际代码中调用...
updateActionList().finally(function() {
//Do stuff
});
updateActionList()使用.then和.finally块从getThings()返回一个promise。
我只是希望finally块能够自行解决,所以测试可以通过。
或者还有其他一些我需要做的事情吗?我不确定为什么最终未定义。
所以这个电话......
updateActionList().finally(function() {
//Do stuff
});
从其他函数返回一个promise,本质上我的问题是在updateActionList()mock之前返回promise的函数需要另一个finally调用。
this.getThings = jasmine.createSpy("getThings").and.returnValue({
then: function(cb) {
cb(self.mockPlugins);
return {
finally: function(cb) {
cb();
return {
finally: function(cb) {
cb();
}
};
}
};
}
});