lundi 23 novembre 2015

Unit testing service doesn't inject Factory

I'm new to unit testing with jasmine, and i've got some issues while trying to make it work. I'm using a project generated with yeoman, using gulp-angular generator.

I have a service :

export class AuthService {
   constructor (FactoryAppStateService) {
    'ngInject';

    this.FactoryAppStateService = FactoryAppStateService;
    this.test = 'toto';
  }

  login (loginInfos) {
    var user = {
        'userName' : loginInfos.username,
        'token' : 'token'
    }
    var credentials = {
      'cientId' : 'testFromService',
      'clientSecret' : 'testFromService'
    }
    this.FactoryAppStateService.setUser(user);
    this.FactoryAppStateService.setClientId(credentials.clientId);
    this.FactoryAppStateService.setClientSecret(credentials.clientSecret);
    this.test = 'tata';
    return user.token;
  }

  getTest () {
    return this.test;
  }
}

and a test :

describe('service Auth', () => {
  // load the service's module
  beforeEach(angular.mock.module('monNotaireFront'));

  it('should do something', function () {
    var service;

    angular.mock.inject(function GetDependencies(AuthService) {
      service = AuthService;
    });

    expect(service.getTest()).toBe('tata');
  });
});

And i'm getting this :

PhantomJS 1.9.8 (Windows 7 0.0.0) service Auth should do something FAILED Error: [$injector:unpr] Unknown provider: FactoryAppStateServiceProvider <- FactoryAppStateService <- AuthService http://ift.tt/1WXj5CT$injector/unpr?p0=FactoryAppStateServiceProvider%20%3C-%20FactoryAppStateService%20%3C-%20AuthService at C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4289 at getService (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4437) at C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4294 at getService (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4437) at invoke (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4469) at instantiate (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4486) at C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4346 at invoke (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4478) at enforcedReturnValue (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4330) at invoke (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4478) at C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4295 at getService (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4437) at invoke (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular/angular.js:4469) at workFn (C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular-mocks/angular-mocks.js:2438) at C:/Users/gayard/Documents/Dev/monnotaire-angularjs/bower_components/angular-mocks/angular-mocks.js:2410 at C:/Users/gayard/Documents/Dev/monnotaire-angularjs/.tmp/serve/app/index.module.js:9

And i have no idea why the factory used by my service can't be injected. I was trying diferents solutions like this one before :

describe('service Auth', () => {
  beforeEach(angular.mock.module('monNotaireFront'));

  let AuthService;

  beforeEach(inject((_AuthService_) => {
    AuthService = _AuthService_;
  }));

  it("should return tata", () => {
    AuthService.login({username : 'test'});
    expect(AuthService.getTest()).toEqual('tata');
  });

});

But with same error... Any ideas ?

Aucun commentaire:

Enregistrer un commentaire