如何使用Mocked组件的方法 - Jasmine(Angular 2)

时间:2017-07-14 18:45:32

标签: angular unit-testing mocking override karma-jasmine

我在我的单元测试用例中使用this库来模拟组件。

现在每当我测试一个使用subComponent方法的方法时,它就会抛出错误:

 Uncaught TypeError: Cannot read property 'methodOfChildComponent' of undefined

我在link中看到,使用NO_ERRORS_SCHEMACUSTOM_ELEMENTS_SCHEMA会使test cases排除child components

但在我的情况下,这也行不通。我试过两个但是我总是得到同样的错误。

他们的任何方法都可以在我的测试用例中使用childComponent's方法。因此,在运行ng test时,我不会收到任何错误。

修改

我已添加:

MockComponent({
      selector: 'sel-p,
      inputs: ['name'],
    }),

并导入import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

并添加schemas: [CUSTOM_ELEMENTS_SCHEMA],我也试过了NO_ERRORS_SCHEMA,但似乎都没有。{/ p>

注意 通过搜索我发现我可以使用overrideComponent来覆盖子组件。但我找不到任何这方面的例子。

1 个答案:

答案 0 :(得分:0)

您需要从' @ angular / core'中导入导入{CUSTOM_ELEMENTS_SCHEMA};到您的spec文件,并在TestBed.configureTestingModule中添加模式:[CUSTOM_ELEMENTS_SCHEMA]

您需要创建一个mock子指令,该指令与子组件具有相同的选择器,并将其引入声明数组,以便它可以使用它。模拟子指令只需要从原始组件中获得尽可能多的东西,以便运行测试。