BreezeJS をエンティティ マネージャーとして機能させながら、$httpBackend を使用して仕様または e2e テストを構築できた人はいますか?
BreezeJS コードは次のとおりです。
function getClientsAll() {
var query = breeze.EntityQuery.from('clients').using($clientJsonResultsAdapter);
return em.executeQuery(query);
}
AngularJS $httpBackend を使用した Jasmine 仕様のテスト コードは次のとおりです。
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 と互換性がないかどうか疑問に思っています。
洞察をありがとう。
//編集 --- スティーブの応答のために 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();