Angular Unit Testing
How to mock the HTTP backend
by Jeremy Likness
HTML
<script src="http://code.angularjs.org/1.2.9/angular.js"></script>
<script src="http://jasmine.github.io/2.0/lib/jasmine.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/2.0/lib/jasmine.css">
<script src="http://jasmine.github.io/2.0/lib/jasmine-html.js"></script>
<script src="http://jasmine.github.io/2.0/lib/boot.js"></script>
<script src="http://code.angularjs.org/1.2.9/angular-mocks.js"></script>
JavaScript
describe('$httpBackend', function () {
var mockList = [{
id: 1,
firstName: "Jeremy",
lastName: "Likness"
}];
it("expects $http to call and retrieve mock contacts",
inject(function ($http, $httpBackend) {
var url = '/api/contacts',
successCallback = jasmine.createSpy();
console.log(successCallback);
$httpBackend.expectGET(url).respond(200, mockList);
$http.get(url).success(successCallback);
expect(successCallback).not.toHaveBeenCalled();
$httpBackend.flush();
console.log(successCallback.calls.mostRecent().args);
expect(successCallback.calls.mostRecent().args)
.toContain(mockList);
expect(successCallback.calls.mostRecent().args[1])
.toBe(200);
}));
});