要点:
我监视我的休息服务的方法:
spyOn(restService, 'get').and.callFake(function () {
return deferred.promise;
});
我尝试测试的方法是myService.getFormData(),它返回一个链式承诺:
function getFormData() {
var getPromise = this.restService.get(endPoint, params, true);
var processedDataPromise = then(successHandle, failHandler);
return processedDataPromise;
}
回到Jasmine规范,我调用getFormData函数并进行断言:
var processedDataPromise = myService.getFormData();
processedDataPromise.then(function(data) {
expect(data).not.toBeNull();
});
deferred.resolve(testFormData);
$rootScope.$digest();
问题:
上面的衍生承诺(processedDataPromise)确实得到了解决。然而,'数据'传递给它是不确定的。是否与$ digest周期没有在Jasmine中工作有关?
为什么Jasmine不会将任何数据传递给上面派生的promise。
进一步说明:processedDataPromise是一个全新的承诺,而不是获得返回的承诺。
对于processedData的承诺,正如我们所看到的那样,一旦其父getPromise被解析,它就会被successHandle(定义未显示)返回。
在UI中,一切都像魅力一样。
答案 0 :(得分:0)
很抱歉发布了这个问题。衍生承诺确实得到了我所指的解析数据。问题是我错误地访问了successHandle中的JSON数据。
结果'successHandle'返回null并且processedDataPromise返回未定义的响应。
愚蠢的错误,很难找到,但最好的部分是学习和理解JS Promises。