【发布时间】:2014-08-19 17:00:56
【问题描述】:
我正在测试我的指令,该指令使用 Restangular 进行控制器中的一些 API 调用。
对于 Restangular 使用的带有 Promise 的函数,我正在模拟这些函数并将其与我的主模型放在一起,如下所示:
model = {
comments: comments,
one: function () {
deferred = $q.defer();
return deferred.promise;
},
post: function () {
deferred = $q.defer();
return deferred.promise;
},
remove: function () {
deferred = $q.defer();
return deferred.promise;
}
};
所以当执行一个运行 Restangular 函数的函数时,例如:
$scope.model.post('comments', newComment).then(...);
我自己决定拒绝或解决它:
deferred.reject();
$scope.$digest();
一切正常,但当函数嵌套时,例如这里:
$scope.model.one('comments', comment.id).remove().then(...);
在这种情况下,我收到一个错误,即 remove is not defined(尽管我定义了它):
TypeError: 'undefined' is not a function (evaluating '$scope.model.one('comments', comment.id).remove()')
我错过了什么吗?
【问题讨论】:
-
这是什么状态?我可以帮忙吗?
-
如果可以的话。我只是跳过了带有嵌套操作的测试,所以 .one.remove 或 .one.getList 例如不知道如何模拟...
标签: angularjs unit-testing restangular