Javascript 错误:单元测试AngularJs服务时,没有挂起的刷新请求
我是AngularJs的新手,我正在编写我的第一个单元测试;为了测试服务,我编写了一个测试,只返回一个Json对象。但是,每次运行测试时,我都会得到标题中说明的错误。我不知道到底是什么导致了这一切!我试着在Javascript 错误:单元测试AngularJs服务时,没有挂起的刷新请求,javascript,angularjs,karma-runner,angular-mock,Javascript,Angularjs,Karma Runner,Angular Mock,我是AngularJs的新手,我正在编写我的第一个单元测试;为了测试服务,我编写了一个测试,只返回一个Json对象。但是,每次运行测试时,我都会得到标题中说明的错误。我不知道到底是什么导致了这一切!我试着在$apply和$digest上阅读,但不确定在我的情况下是否需要这样做,如果需要,如何;一个简单的plunker演示将不胜感激 这是我的密码 服务 测试 错误 libs版本 AngularJS v1.2.21 AngularJS mock v1.2.21我看不出您实际上在哪里发布报告。quer
$apply
和$digest
上阅读,但不确定在我的情况下是否需要这样做,如果需要,如何;一个简单的plunker演示将不胜感激
这是我的密码
服务
测试
错误
libs版本
AngularJS v1.2.21
AngularJS mock v1.2.21我看不出您实际上在哪里发布报告。query()。getBook函数只返回一个无法解析的承诺,因为函数中没有任何内容是异步的 您需要通过book函数调用Report.query,并在.then()中解析承诺(在book函数中)。之后,刷新service.getBook().then()中的http后端并执行预期操作
var allBookss = [];
var filteredBooks = [];
/*Here we define our book model and REST api.*/
var Report = $resource('api/books/:id', {
id: '@id'
}, {
query: {
method: 'GET',
isArray: false
}
});
/*Retrive the requested book from the internal book list.*/
var getBook = function(bookId) {
var deferred = $q.defer();
if (bookId === undefined) {
deferred.reject('Error');
} else {
var books= $filter('filter')(allBooks, function(book) {
return (book.id == bookId);
});
if (books.length > 0) {
deferred.resolve(books[0]);//returns a single book object
} else {
deferred.reject('Error');
};
};
return deferred.promise;
};
describe('unit:bookService', function(){
beforeEach(module('myApp'));
var service, $httpBackend;
beforeEach(inject(function (_bookService_, _$httpBackend_) {
service = _bookService_;
$httpBackend = _$httpBackend_;
$httpBackend.when('GET', "/api/books/1").respond(200, {
"book": {
"id": "1",
"author": "James Spencer",
"edition": "2",
.....
}
});
}));
afterEach(function() {
$httpBackend.verifyNoOutstandingExpectation();
$httpBackend.verifyNoOutstandingRequest();
});
it('should return metadata for single report', function() {
service.getBook('1').then(function(response) {
expect(response.length).toEqual(1);
});
$httpBackend.flush();// error is in this line
});
});
Error: No pending request to flush !
at c:/myapp/bower_components/angular-mocks/angular-mocks.js:1439
at c:/myapptest/tests/bookTest.js:34