我使用茉莉,试图将以下函数作为角度服务的一部分进行测试
service.initialize = function (params) {
var defer = $q.defer();
$q.all([service.getSpecs(params), service.getValData(params), service.getRelatedMeasures(params)])
.then(function (values) {
$q.all([service.getIssues(), service.getData(params, values)])
.then(function (values) {
defer.resolve(values);
});
});
return defer;
};
两个$q.all()
语句中的每个引用函数都包含$http
调用。
在我的测试中,我使用$http
模拟了所有$httpBackend
次调用。我的测试看起来像这样:
describe('the intialize function', function () {
var mockParams = {};
beforeEach(function () {
svc.initialize(mockParams);
$httpBackend.flush();
});
it('should call the getSpecs function', function () {
expect(editorSvc.getSpecs).toHaveBeenCalledWith(mockParams);
});
});
但是,我收到一个错误,即队列中仍有$http
个请求。我曾尝试再次调用$httpBackend.flush()
,并且还包括$rootScope.$apply()
各种命令,我无法解决内部承诺。
有什么方法吗?