BreezeJS를 엔티티 관리자로 사용하면서 $ httpBackend를 사용하여 스펙 또는 e2e 테스트를 작성한 사람이 있습니까? 여기
는 BreezeJS 코드 :function getClientsAll() {
var query = breeze.EntityQuery.from('clients').using($clientJsonResultsAdapter);
return em.executeQuery(query);
}
그리고 여기에 사용 재스민 사양에서 테스트 코드입니다 AngularJS와 $ httpBackend :
it('should show all clients', function() {
$httpBackend.expectGET(/clients/).respond([ 200, mockData.clients.GET]);
backupModelService.getClientsAll()
.then(function() {
console.log("getClientsAll success");
})
.fail(function() {
console.log("getClientsAll fail");
})
$httpBackend.flush();//error thrown here
});
하지만 재스민 검사 오류를 얻을
Error: No pending request to flush !
이 브리즈 메서드는 브라우저에서 제대로 작동하지만 테스트 중에는 제대로 작동하지 않습니다. 그러나, angularJS $ http 또는 $ resource를 사용하여 변환하면이 테스트가 통과됩니다. BreezeJS가 사양 및 e2e 테스트를위한 $ httpBackend와 호환되지 않는지 궁금합니다.
어떤 통찰력에도 감사드립니다.
// 편집 --- 때문에 STEVE의 응답
OF AJAX를 조롱하려고하면이 역시 실패합니다.
var success = jasmine.createSpy('success');
var fail = jasmine.createSpy('fail');
spyOn($, 'ajax').andCallFake(function (req) {
var d = $.Deferred();
d.resolve(mockData.clients.GET);
return d.promise();
});
backupModelService.getClientsAll()
.then(success)
.fail(fail);
expect(success).toHaveBeenCalled();
스티브 응답을 주셔서 감사합니다. 나는 아직도 어떤 이유로 전화를 걸기 위해 산들 바람을 피우지 않고있다. 내 답변을 수정하여 제안한 변경 사항을 포함 할 예정입니다. – user2755508