2017-02-08 10 views
0

Я работаю через angular-phonecat update tutorial. Я пытаюсь получить модульные тесты, выполняемые на этапе, где служба Phone преобразуется в angular2. Само приложение работает, но не те тесты. Проводятся тесты, которые находятся только в контакте с angluarjs, а также тесты, которые находятся в контакте с angular2. Но смешанные не работают. Phone -service не впрыскивается:Как запустить модульные тесты с кармой в проекте модернизации с угловым (1 -> 2)?

Error: [$injector:unpr] Unknown provider: PhoneProvider <- Phone 
[1]  http://errors.angularjs.org/1.5.11/$injector/unpr?p0=PhoneProvider%20%3C-%20Phone 

я поставил код на BitBucket repo.

Я думаю, проблема связана с UpgradeModule. Я много пробовал и очень запутался. Помощь приветствуется.

+0

Или кто-нибудь знает, работающий пример обновления на общедоступном хранилище со смешанным '' angularjs'and angular' в его тесты? –

ответ

0

Не уверен, что вы все еще нужно, но, вероятно, было бы полезно для кого-то

import "angular-mocks/ngMock"; 
import * as angular from "angular"; 

import {inject, TestBed} from "@angular/core/testing"; 
import {Inject, Injectable, FactoryProvider} from "@angular/core"; 
import {AngularJSService} from "angularjs/angularjs.service" // angularjs service which is upgraded and injected in ExampleService angular service 

// upgrading angular js service to make it possible to inject into angular services/components 
const UpgradedProvider: FactoryProvider = { 
    provide: AngularJSService, 
    useFactory: ($injector: angular.auto.IInjectorService) => {$injector.get('AngularJSService')}, 
    deps: ['$injector'] 
}; 

// this is angular service which has upgraded angularjs service in dependency 
@Injectable() 
class ExampleService { 
    public name: string = 'Example Service'; 

    constructor(angularJSService: AngularJSService) { 
    // injecting angular js service 
    } 
} 

describe('Angular Example Test Suite ',() => { 
    let $injector: angular.auto.IInjectorService; 

    beforeEach(() => { 
    // init angular js module for test and define upgraded angular js service in this module 
    angular.module('ExampleTest', []).service('AngularJSService', AngularJSService); 
    }); 

    beforeEach(angular.mock.module('ExampleTest')); 
    beforeEach(angular.mock.inject((_$injector_: ng.auto.IInjectorService) => { 
    $injector = _$injector_; 
    })); 

    beforeEach(() => { 
    TestBed.configureTestingModule({ 
     providers: [ 
     { 
      provide: '$injector', 
      useFactory:() => $injector, 
      deps: [] 
     }, 
     UpgradedProvider, 
     ExampleService 
     ] 
    }); 
    }); 

    it('should inject ExampleService', inject([ExampleService], (exampleService: ExampleService) => { 
    chai.assert.isDefined(exampleService); 
    })); 
});