2016-12-06 1 views
-1

Я как бы в этом завис. Я использовал проекты быстрого запуска Angular 2 как ссылку для модульного тестирования Angular 2, но, похоже, у вас есть приложение в игре. В моем случае у нас есть пакеты NPM, в которых есть модули Angular 2, которые доступны для разных проектов в нашей организации. Я хотел бы иметь возможность тестировать код внутри этих общих библиотек изолированно (без их участия в приложении).Единичное тестирование Угловые 2 компонента внутри общей библиотеки NPM Пакет без контекста приложения

Я ищу примеры или учебное пособие или что-то объясняющее наилучший подход к этому, Google не предоставил никакой помощи.

ответ

1

Ну, что я делаю в моей Karma тест что-то вроде:

Создание макета компонента

@Component({ 
     template: "", 
     selector: 'mock' 
}) 
export class MockComponent implements OnInit { 
    constructor() { } 
    ngOnInit() { 
    console.log("Is loaduing"); 
    } 
} 

создать макет Service

class MockSomeService { 
    public subscribe(){} 
    public inizialize() {} 
} 

Создать маршруты массиву

export var ROUTES = [ {path:"/pathexample", component: MockComponent}] 

Создать декларациях массив

export var DECLARATIONS:Component[] = [ 
    MockComponent, ExampleComponent 
]; 

Создать ПРОВАЙДЕРАМ

const CONSTANTS_PROVIDERS: Provider[] = [ 
    { provide: SomeService, useClass: MockSomeService } 
]; 

Написать тест

describe('Component: example',() => { 

    beforeEach(() => { 
    TestBed.configureTestingModule({ declarations: DECLARATIONS, providers: CONSTANTS_PROVIDERS, imports: [RouterTestingModule.withRoutes(ROUTES)] }); 
    }); 

    it('should create an instance', inject([ExampleComponent], (component: ExampleComponent) => { 
    expect(component).toBeTruthy(); 
    })); 

}); 

Если компонент использует route.navigate вы должны использовать TestBed.overrideComponent и добавьте template: '<router-outlet></router-outlet>' к вашему компоненту, если его нет еще и на самом деле создайте такой компонент: TestBed.createComponent (ExampleComponent);

Смежные вопросы