Fake HTTP backend implementation suitable for end-to-end testing or backend-less development of
applications that use the $http service
.
Note: For fake http backend implementation suitable for unit testing please see
unit-testing $httpBackend mock
.
This implementation can be used to respond with static or dynamic responses via the when
api
and its shortcuts (whenGET
, whenPOST
, etc) and optionally pass through requests to the
real $httpBackend for specific requests (e.g. to interact with certain remote apis or to fetch
templates from a webserver).
As opposed to unit-testing, in an end-to-end testing scenario or in scenario when an application
is being developed with the real backend api replaced with a mock, it is often desirable for
certain category of requests to bypass the mock and issue a real http request (e.g. to fetch
templates or static files from the webserver). To configure the backend with this behavior
use the passThrough
request handler of when
instead of respond
.
Additionally, we don't want to manually have to flush mocked out requests like we do during unit testing. For this reason the e2e $httpBackend automatically flushes mocked out requests automatically, closely simulating the behavior of the XMLHttpRequest object.
To setup the application to run with this http backend, you have to create a module that depends
on the ngMockE2E
and your application modules and defines the fake backend:
myAppDev = angular.module('myAppDev', ['myApp', 'ngMockE2E']); myAppDev.run(function($httpBackend) { phones = [{name: 'phone1'}, {name: 'phone2'}]; // returns the current list of phones $httpBackend.whenGET('/phones').respond(phones); // adds a new phone to the phones array $httpBackend.whenPOST('/phones').respond(function(method, url, data) { phones.push(angular.fromJSON(data)); }); $httpBackend.whenGET(/^\/templates\//).passThrough(); //... });
Afterwards, bootstrap your app with this new module.
Creates a new backend definition.
method – {string} –
HTTP method.
url – {string|RegExp} –
HTTP url.
data(optional) – {(string|RegExp)=} –
HTTP request body.
headers(optional) – {(Object|function(Object))=} –
HTTP headers or function that receives http header object and returns true if the headers match the current definition.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.
{function([status,] data[, headers])|function(function(method, url, data, headers)}
– The respond method takes a set of static data to be returned or a function that can return
an array containing response status (number), response data (string) and response headers
(Object).{function()}
– Any request matching a backend definition with passThrough
handler, will be pass through to the real backend (an XHR request will be made to the
server.Creates a new backend definition for DELETE requests. For more info see when()
.
url – {string|RegExp} –
HTTP url.
headers(optional) – {(Object|function(Object))=} –
HTTP headers.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.
Creates a new backend definition for GET requests. For more info see when()
.
url – {string|RegExp} –
HTTP url.
headers(optional) – {(Object|function(Object))=} –
HTTP headers.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.
Creates a new backend definition for HEAD requests. For more info see when()
.
url – {string|RegExp} –
HTTP url.
headers(optional) – {(Object|function(Object))=} –
HTTP headers.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.
Creates a new backend definition for JSONP requests. For more info see when()
.
url – {string|RegExp} –
HTTP url.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.
Creates a new backend definition for PATCH requests. For more info see when()
.
url – {string|RegExp} –
HTTP url.
data(optional) – {(string|RegExp)=} –
HTTP request body.
headers(optional) – {(Object|function(Object))=} –
HTTP headers.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.
Creates a new backend definition for POST requests. For more info see when()
.
url – {string|RegExp} –
HTTP url.
data(optional) – {(string|RegExp)=} –
HTTP request body.
headers(optional) – {(Object|function(Object))=} –
HTTP headers.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.
Creates a new backend definition for PUT requests. For more info see when()
.
url – {string|RegExp} –
HTTP url.
data(optional) – {(string|RegExp)=} –
HTTP request body.
headers(optional) – {(Object|function(Object))=} –
HTTP headers.
{requestHandler}
– Returns an object with respond
and passThrough
methods that
control how a matched request is handled.