2016-07-19 3 views
0

angular2 단위 테스트부터 시작하여 문제가 있습니다. 나는 그것의 매개 변수 ApplicationRefComponentResolver 서비스는 다음 구성 요소를 동적으로로드 할 ComponentResolver을 사용하기 때문에 허용하는 서비스가있다. 제 질문은 어떻게 그 단위 테스트에서 위의 매개 변수를 해당 서비스로 전달할 수 있습니까?서비스 (의존성 있음) 단위 테스트 with angular2

+0

무엇 Angular2 버전? 당신이하고있는 것을 보여주는 몇 가지 코드를 제공해 주시겠습니까? 나는 https://github.com/angular/angular/blob/master/CHANGELOG.md#200-rc0-2016-05-02'setBaseTestProviders'가 여전히 갈 길이라는 것을 모른다. –

답변

0

이 예제는 당신을 도울 수 있는가 :

import {Component, provide} from '@angular/core'; 
import {ComponentFactory} from '@angular/core/src/linker/component_factory'; 
import {ComponentResolver, ReflectorComponentResolver} from '@angular/core/src/linker/component_resolver'; 
import {ReflectionInfo, reflector} from '@angular/core/src/reflection/reflection'; 
import {afterEach, beforeEach, beforeEachProviders, ddescribe, describe, expect, iit, inject, it, xdescribe, xit} from '@angular/core/testing/testing_internal'; 
import {AsyncTestCompleter} from '@angular/core/testing/testing_internal'; 
import {Console} from '../../src/console'; 

class DummyConsole implements Console { 
    log(message: string) {} 
    warn(message: string) {} 
} 

export function main() { 
    describe('Compiler',() => { 
    var someCompFactory: any /** TODO #9100 */; 
    var compiler: ComponentResolver; 

    beforeEach(() => { 
     someCompFactory = new ComponentFactory(null, null, null); 
     reflector.registerType(SomeComponent, new ReflectionInfo([someCompFactory])); 
     compiler = new ReflectorComponentResolver(new DummyConsole()); 
    }); 

    it('should read the template from an annotation', 
     inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { 
     compiler.resolveComponent(SomeComponent).then((compFactory: ComponentFactory<any>) => { 
      expect(compFactory).toBe(someCompFactory); 
      async.done(); 
      return null; 
     }); 
     })); 

    it('should throw when given a string', 
     inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { 
     compiler.resolveComponent('someString').catch((e) => { 
      expect(e.message).toContain('Cannot resolve component using \'someString\'.') 
       async.done(); 
     }); 
     })); 
    }); 
} 

class SomeComponent {}