【发布时间】:2014-06-13 17:25:18
【问题描述】:
我目前正在为一个以 Angular 版本实现的项目创建单元测试。 1.2
我创建了一个 mockService 返回一个延迟的承诺,以便与我的控制器测试一起使用。服务方法如下所示:
function getItems() {
var deferred = $q.defer();
deferred.resolve(["item1", "item2"]);
$rootScope.$apply();
return deferred.promise;
}
当我调用这个服务方法并执行 deferred.resolve 时,我得到一个错误
TypeError: 'undefined' is not an object (evaluating 'promise.data.map')
有谁知道promise.data.map 是什么以及我需要做什么来修复错误?
【问题讨论】:
-
听起来好像任何调用
getItems都没有将结果视为承诺。也许如果您发布调用它的代码,我们可以提供进一步的见解。 -
结果被视为承诺,但感谢您的建议。事实证明这根本不是那么棘手。有一个方法 promise.data.map 将结果映射到 .then 方法中的另一种格式。因为我发送的是字符串而不是对象,所以这个映射失败了。
-
你为什么会选择返回一个已经解决的承诺?
-
代码用于单元测试,对于我的测试,可以返回已解决的承诺。
标签: javascript angularjs unit-testing promise