超时-在jasmine.DEFAULT\u Timeout\u INTERVAL指定的超时内未调用异步回调。测试具有defer()的javascript代码时
我在FormService.js中有以下代码超时-在jasmine.DEFAULT\u Timeout\u INTERVAL指定的超时内未调用异步回调。测试具有defer()的javascript代码时,javascript,angularjs,unit-testing,sinon,jasmine-node,Javascript,Angularjs,Unit Testing,Sinon,Jasmine Node,我在FormService.js中有以下代码 service.retriveFields = function (Id,UniqueIds) { var deferred = $q.defer(); function success(successResponse) { // valid response received if (successResponse.data) { d
service.retriveFields = function (Id,UniqueIds) {
var deferred = $q.defer();
function success(successResponse) {
// valid response received
if (successResponse.data) {
deferred.resolve(successResponse.data);
} else {
// TODO: show error message
console.log("error");
deferred.reject(response);
}
}
function error(errorResponse) {
console.log(errorResponse);
deferred.reject(errorResponse);
// TODO: show error message
}
// service call
SomeFactory.retriveFields(Id, UniqueIds)
.then(success, error);
return deferred.promise;
};
我已经编写了以下测试用例
描述('retrievefields()',函数(){
然而,我得到了以下错误
错误:超时-在jasmine.DEFAULT\u Timeout\u INTERVAL指定的超时内未调用异步回调
我不明白为什么会发生超时。我是否测试错误
如果是,请帮助我如何测试延迟看起来您没有调用
done()
让Jasmine
知道如何停止等待您的测试完成。@user\u 531如果这包括了您需要的内容,或者您还有其他问题,请告诉我
it('tests function call', function (done) {
var response = {data: {}};
var deferred = $q.defer();
var promise = deferred.promise;
promise.then(function () {
resolve(response);
});
var Id = "5b7d86e60bf5e5bc21b4309f";
var UniqueIds = ["5b7d71b822fc4e102c0875d3", "5b7d71ad2d4914162cb12ec6"];
sinon.stub(SomeFactory, 'retriveFields')
.returns($q.when(response));
var promise = FormService.retriveFields (Id,UniqueIds);
promise.then(function (result) {
expect(result).toEqual({data :{}});
})
});
});