【问题标题】:Creating an instance of a component: Angular2 unit testing创建组件实例:Angular2 单元测试
【发布时间】:2016-09-30 09:35:37
【问题描述】:

我正在尝试在组件的测试文件中创建一个组件的实例。但是当我做这样的事情时:

let componentInstance = new component();

它命中了组件构造函数,它的主体中还有一些东西,

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

现在构造函数体使用其他一些服务,因此每当我尝试创建该组件的实例并运行它时,它都会抱怨构造函数体中使用的未知属性(因为规范文件显然没有'不知道我们组件的构造函数体中发生了什么。

任何想法如何在其规范文件中创建该组件的实例?

【问题讨论】:

    标签: angular angular2-testing


    【解决方案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 请求。例如,请参见下面的链接

    另请参阅:

    【讨论】:

    • 这有帮助,谢谢!但是当我尝试使用 TestBed 创建一个组件,然后通过“fixture.componentInstance”创建它的实例时,我仍然无法使用该实例访问组件的属性。因此,如果我在组件的类定义中有一个名为“number”的整数变量,我无法使用我们刚刚在规范文件中创建的 fixture.componentInstance 实例访问“number”。对此有何建议?
    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2019-05-06
    • 2018-01-16
    相关资源
    最近更新 更多