jeudi 9 juillet 2015

Angular Mock httpBackend testing

I've started writing a test for a service, when the test is run it passed but I don't understand how. Why does this test pass and what is an instance that would cause it to fail? I believe answering this will help me understand httpBackend mocks.

describe('Create a sale via the API', function() {

  beforeEach(module('app.services'));

  var service, httpBackend;

  beforeEach(inject(function($injector) {
    service = $injector.get('saleService');
    httpBackend = $injector.get('$httpBackend');
  }));

  it('should return the HTTP 201 Created', function() {
    httpBackend.when('POST', '/sales')
      .respond({ status: '201' });
  });

});

The service

angular.module('app.services')
       .service('saleService',
                ['$rootScope',
                 '$http',
                 '$q',

function($rootScope, $http, $q) {

    var sale = this;

    sale.getAll = function() {
        var defer = $q.defer();
        $http.get('/sales')
        .success(function(resp) {
            defer.resolve(resp);
        })
        .error(function(error, status) {
            defer.reject(error);
        });
        return defer.promise;
    };

    sale.createSale = function(sale) {
        var defer = $q.defer();
        $http.post('/sales/new', sale)
        .success(function(resp) {
            defer.resolve(resp);
        })
        .error(function(error, status) {
            defer.reject(error);
        });
        return defer.promise;
    }

    sale.deleteSale = function(id) {
        var defer = $q.defer();
        $http.delete('/sales/delete?dataId=' + id)
        .success(function(resp) {
            defer.resolve(resp);
        })
        .error(function(error, status) {
            defer.reject(error);
        });
        return defer.promise;
    }

    return sale;

}]);

Aucun commentaire:

Enregistrer un commentaire