2016-09-30 82 views
0

我想在组件的测试文件中创建一个组件的实例。但是,当我做这样的事情:创建一个组件的实例:Angular2单元测试

let componentInstance = new component(); 

它击中的组件构造,其还具有在它的身上的东西,

constructor(param) { 
......; 
......; 
} 

现在在构造函数体使用了一些其他服务,因此每当我试图创建这个组件的一个实例并运行它,它会抱怨正在构造函数体中使用的未知属性(因为spec文件显然不知道组件的构造函数体中发生了什么)

任何我deas如何在其spec文件中创建该组件的实例?

回答

1

在每次测试之前,您应该使用TestBed配置一个测试模块。在这里,您可以声明要测试的组件以及它需要的任何提供程序。然后您还使用TestBed创建组件。

beforeEach(() => { 
    TestBed.configureTestingModule({ 
    imports: [] 
    declarations: [ TestComponent ], 
    providers: [ TestService ] 
    }); 
}); 

it('...',() => { 
    let fixture = TestBed.createComponnt(TestComponent); 
    let component: TestComponent = fixture.componentInstance; 
}); 

如果TestService需要任何服务,那么您应该添加这些。如果TestService需要Http,那么您需要模拟连接,以便在测试期间没有真正的XHR请求。请参阅下面的例子

另请参见链接:

+0

这有帮助,谢谢!但是当我尝试用TestBed创建一个组件,然后通过'fixture.componentInstance'创建它的实例时,我仍然无法访问该实例的组件属性。因此,如果我们的组件的类定义中有一个名为'number'的整型变量,那么我不能通过在spec文件中创建fixture.componentInstance的实例来访问'number'。对此有何建议? – Aiguo