异步服务调用的angularJS的未满足GET请求Jasmine
当我运行我的jasmine测试用例时,收到未满足的GET请求错误消息。我正在尝试测试我的服务。 结构如下:异步服务调用的angularJS的未满足GET请求Jasmine,angularjs,jasmine,Angularjs,Jasmine,当我运行我的jasmine测试用例时,收到未满足的GET请求错误消息。我正在尝试测试我的服务。 结构如下: describe('should test Static Quotes List functionality', function () { it('should check list of static quotes is not null', function () { //ARRANGE
describe('should test Static Quotes List functionality', function () {
it('should check list of static quotes is not null', function () {
//ARRANGE
var url = CONFIG.autoApiBaseUrl + 'api/quotesconfig';
httpBackend.expect('GET', url).respond(staticQuotesData);
//ACT
retrievequoteService.getStaticQuotes().then(function (data) {
//ASSERT
expect(data).not.toBeNull();
expect(data.length).toEqual(1);
});
setTimeout(function () {
httpBackend.flush();
}, 100);
});
});
我的服务文件是:
function getStaticQuotes() {
var deferred = $q.defer();
retrievequoteResource.getStaticQuotes().$promise.then(function (result) {
deferred.resolve(result);
});
return deferred.promise;
}
你能帮我解决这个问题吗
谢谢。
萨耶什我把它改成了
spyOn(retrievequoteResource, "getStaticQuotes").and.returnValue({ $promise: q.when(staticQuotesData) });
//ACT
var result;
var promise = retrievequoteService.getStaticQuotes();
promise.then(function (result) {
expect(result).not.toBeNull();
expect(result.length).toEqual(1);
});
$rootScope.$digest();
如果您提供了测试失败的详细信息,这将非常有帮助。此外,您似乎正在使用延迟反模式。您的服务应该只
返回retrievequoteResource.getStaticQuotes()。$promise代码>谢谢你的回复。详细信息是:未满足的请求:GET/onlinesalesapp auto/api/QuoteConfig at Function.$httpBackend.verifyNoOutstandingExpectation()at Object。)我要做的第一件事是删除setTimeout
。不知道为什么要在测试中使用它这里真正的问题是,您似乎在测试两件事情,而这不是单元测试的目的。如果您正在测试retrievequoteService
,那么您应该模拟retrievequoteResource