unit testing - How to avoid the 'Error: Unexpected request: GET' every time an AngularJS test does a rootScope.digest() or httpBackend.flush() -


all unit tests, not e2e tests, explicit rootscope.digest() or httpbackend.flush() flush asynchronous callback, experience error:

how avoid 'error: unexpected request: get' no more request expected 

i reckon because httpbackend calls ui-router template. don't know why wants so. i'm not asking this. want call mocked json service.

this error forces me have following statement in each it() block:

$httpbackend.whenget(/\.html$/).respond('');   

there must neater way.

specially if test has no use of $httpbackend in first place:

  it('should return list of searched users', function() {     // use statement avoid error $http service making request application main page     $httpbackend.whenget(/\.html$/).respond('');      var users = null;     userservice.search('toto', 1, 10, 'asc', function(data) {       users = data.content;     });     $rootscope.$digest();     expect(users).toequal(restservice.allusers.content);   }); 

the test passes looks hackish. or noobish :-)

edit: test:

  it('should return list of users', function () {     // use statement avoid error $http service making request application main page     $httpbackend.whenget(/\.html$/).respond('');     // create mock request , response     $httpbackend.expectget(env.nitro_project_rest_url + '/users/1').respond(mockeduser);     // exercise service     var user = null;     restservice.user.get({userid: 1}).$promise.then(function(data) {       user = data;     });     // synchronise     $httpbackend.flush();     // check callback data     expect(user.firstname).toequal(mockeduser.firstname);     expect(user.lastname).toequal(mockeduser.lastname);   }); 

this design, tests should checking http calls being made , they're requesting correct url. instead of checking whether requests made /\.html$/ why not instead check whether requests made correct endpoints? whether directives partial or api call.

if insist on throwing away useful test, move whenget() beforeeach().


Comments

Popular posts from this blog

css - SVG using textPath a symbol not rendering in Firefox -

Java 8 + Maven Javadoc plugin: Error fetching URL -

node.js - How to abort query on demand using Neo4j drivers -