Unit testing 在公共库NPM包内对2个组件进行单元测试无应用程序上下文
我有点被难住了。我曾使用Angular 2快速启动项目作为单元测试Angular 2的参考,但它似乎假设您有一个应用程序在运行。在我的例子中,我们有NPM包,其中包含Angular 2模块,这些模块在我们组织的各个项目中共享。我希望能够独立地对这些公共库中的代码进行单元测试(而不是将它们作为应用程序的一部分)Unit testing 在公共库NPM包内对2个组件进行单元测试无应用程序上下文,unit-testing,angular,jasmine,karma-runner,karma-jasmine,Unit Testing,Angular,Jasmine,Karma Runner,Karma Jasmine,我有点被难住了。我曾使用Angular 2快速启动项目作为单元测试Angular 2的参考,但它似乎假设您有一个应用程序在运行。在我的例子中,我们有NPM包,其中包含Angular 2模块,这些模块在我们组织的各个项目中共享。我希望能够独立地对这些公共库中的代码进行单元测试(而不是将它们作为应用程序的一部分) 我想找一些例子,或者是一个教程,或者是一些解释这方面最佳方法的东西,谷歌没有提供任何帮助 我在做业力测试,比如: 创建模拟组件 @Component({ template:
我想找一些例子,或者是一个教程,或者是一些解释这方面最佳方法的东西,谷歌没有提供任何帮助 我在做业力测试,比如: 创建模拟组件
@Component({
template: "",
selector: 'mock'
})
export class MockComponent implements OnInit {
constructor() { }
ngOnInit() {
console.log("Is loaduing");
}
}
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();
}));
});
创建模拟服务
class MockSomeService {
public subscribe(){}
public inizialize() {}
}
创建路由数组
export var ROUTES = [ {path:"/pathexample", component: MockComponent}]
export var DECLARATIONS:Component[] = [
MockComponent, ExampleComponent
];
创建声明数组
export var ROUTES = [ {path:"/pathexample", component: MockComponent}]
export var DECLARATIONS:Component[] = [
MockComponent, ExampleComponent
];
创建提供者
const CONSTANTS_PROVIDERS: Provider[] = [
{ provide: SomeService, useClass: MockSomeService }
];
编写测试
@Component({
template: "",
selector: 'mock'
})
export class MockComponent implements OnInit {
constructor() { }
ngOnInit() {
console.log("Is loaduing");
}
}
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();
}));
});
如果您的组件正在使用路由。导航您应该使用TestBed.overrideComponent并向您的组件添加模板:'
,如果还没有模板,则实际创建组件,如图所示TestBed.createComponent(ExampleComponent)强>