lundi 25 avril 2016

Integration Testing AngularJS + Karma + Jasmine

I would like to test my angular service I would like to test it with real data - a.k.a (Integration Test). I'm using Jasmine and Karma.

Here is my test:

describe('Trending Data Service', function () {
  var value = 0, originalTimeout = 0;
  var service, Enums, $httpBackend;

  // initialize module
  beforeEach(module('waterfall'));

  // initialize services
  beforeEach(inject(function ($injector) {
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
    $httpBackend = $injector.get('$httpBackend');
    service = $injector.get("trendingService");
    Enums = $injector.get("Enums");
    spyOn(service, 'fetch').and.callThrough();
  }));

  it('check if dependencies are defined', function () {
    expect(service).toBeDefined();
    expect(Enums).toBeDefined();
    expect(service.categories).toBeDefined();
    expect(service.fetch).toBeDefined();
  });

  it('categories array should be defined within the service', function () {
    expect(service.categories.length).toEqual(9);
    expect(service.categories).toEqual(jasmine.any(Array));
  });

  // this test is alway fails...
  it('fetch method should return initial result', function (done) {
    var promise = service.fetch(Enums.socials.viewAll, false);

    promise.then(function (result) {
      done();
    }, function() {
      expect(1).toBe(2);
      done.fail('Error occured');
    });
  });
}

This is the error: Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

I tried a wide range of solutions and I haven't got any success with this.

Aucun commentaire:

Enregistrer un commentaire