unit testing - Verifying a call on $httpBackend in angularjs test -


i trying write test angularjs mocking $httpbackend. following test.

describe('test', function() {      beforeeach(function (){         module('abcapp');     });      var $httpbackend, filterservice;     beforeeach(inject(function($injector) {         $httpbackend = $injector.get('$httpbackend');         filterservice = $injector.get('filterservice');     }));      it('getcompany calls on http correct parameter', function () {         $httpbackend.when('get', 'api/abc').respond([]);         filterservice.getabc();         $httpbackend.flush();         expect($httpbackend.get).tohavebeencalled();     }); }); 

when run test following error:- error: expected spy, got undefined.

any ideas how assert $httpbackend.get have been called required parameter using expect.

expect($httpbackend.get).tohavebeencalled(); 

is invalid. first because $httpbackend doesn't have (documented) get() method. second, because $httpbackend.get not spied jasmine, can't add jasmine if method has been called.

you should test that, given empty array returned http backend, service returns right thing, or has desired side effect. use

$httpbackend.expectget('api/abc').respond([]); 

and

$httpbackend.verifynooutstandingexpectation(); $httpbackend.verifynooutstandingrequest(); 

so $httpbackend verifies expected request has been sent.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -