Ben
Ben

Reputation: 57217

$httpBackend mock not sending a request?

After too many hours, I cannot for the life of me get this example working. I'm following Ben Lesh's excellent guides to mocking $http requests in Angular, but for some reason the service request is not sending.

I have verified that the service is working properly by building a separate HTML DOM and applying my app and a tiny controller to it. I'm using Jasmine 1.3 and Angular 1.2.9 (and angular-mocks.js of course).

Here's the app:

var app = angular.module('myApp', []);

app.factory('httpBasedService', function($http) {
    return {
        sendMessage: function(msg) {
            return $http.get('something.json?msg=' + msg)
                .then(function(result) {
                    console.log(result.data)
                    return result.data;
                });
        }
    };
});

And the test:

describe("httpBasedService ", function () {
   var httpBasedService,
        mockBackend;

    beforeEach(function (){
        module('myApp');

        inject(function(_$httpBackend_, _httpBasedService_) {
            mockBackend = _$httpBackend_;
            httpBasedService = _httpBasedService_;
        });
    });

    afterEach(function() {
        mockBackend.verifyNoOutstandingExpectation();
        mockBackend.verifyNoOutstandingRequest();
    });

    it('should send the msg and return the response.', function () {
        var returnData = {excited: true};
        mockBackend.expectGET('something.json?msg=wee').respond(returnData);

        var returnedPromise = httpBasedService.sendMessage('wee');
        var result;

        returnedPromise.then(function(response) {
            result = response;
        });

        mockBackend.flush();
        expect(result).toEqual(returnData);
    });
});

I'm getting a Error: No pending request to flush ! and of course a Error: Unsatisfied requests: GET (since nothing has been sent). I watch the network requests and sure enough, no request is sent, even if I remove the mock backend.

I've commented out stuff, restructured stuff, tried lots of other examples, but to no avail. Can someone help me?

Upvotes: 0

Views: 356

Answers (1)

Ben
Ben

Reputation: 57217

As usual, when I talk to the duck, the problem is fixed.

Turns out I was using angular-mocks.js from v1.1.0. My angular.js version was 1.2.9.

Facepalm.

Check your versions, future readers, and save yourself a few hours.

Upvotes: 1

Related Questions