2017-02-08 4 views
0

私はangular-phonecat update tutorialで作業しています。 Phone -serviceがangular2に変換された段階でユニットテストを実行しようとしています。アプリケーション自体は動作していますが、テストは実行されていません。 angluarjsとしか接触していないテストと、angular2としか接触していないテストが実行されています。しかし、混合されたものは実行されません。 Phone -serviceが注入されていません。anglejsアップグレード(1 - > 2)プロジェクトでユニットテストをカルマで実行するにはどうすればいいですか?

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

私はビットバケット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); 
    })); 
}); 
関連する問題