我有一个测试可以创建像这样的控制器...
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()从getThings()返回一个带有.then和.finally块的承诺。
我只希望finally块能够真正解决问题,以便测试可以通过。
或者我还需要做其他事情吗?我不确定为什么最后未定义。
答案 0 :(得分:0)
所以这个电话...
updateActionList().finally(function() {
//Do stuff
});
从其他函数返回一个承诺,本质上我的问题是,在之前 updateActionList()模拟返回该承诺的函数需要另一个finally调用。
this.getThings = jasmine.createSpy("getThings").and.returnValue({
then: function(cb) {
cb(self.mockPlugins);
return {
finally: function(cb) {
cb();
return {
finally: function(cb) {
cb();
}
};
}
};
}
});