条件が満たされるまでリソースをポーリングするシーケンスをテストしています。
Book = $resource("/books/:id", {id: "@id"});
function poll(success) {
Book.get({id:1}, function() {
if (canStop) {
success();
} else {
$timeout(poll, 1000);
}
});
};
以下のテストは失敗しますError: Unsatisfied requests: GET /user_workshops/1
describe('poll', function() {
beforeEach(function() {
$httpBackend.expectGET('/books/1').respond(200,{id:1});
$httpBackend.expectGET('/books/1').respond(200,{id:1, newVal:1});
poll(function() {
successCalled = true;
});
$httpBackend.flush();
$timeout.flush();
canStop=true;
$httpBackend.flush();
});
it('should call success when canStop is true', function() {
expect(successCalled).toBe(true);
});
});
テスト順序を並べ替えて、2 番目を 2 番目のexpectGET
直前に配置しようとしましたhttpBackend.flush()
が、次のようになります。
Error: Unexpected request: POST /books/1
No more request expected