Angular - 编写集成通过@ViewChild测试引用子组件的组件

时间:2017-10-06 12:46:08

标签: angular unit-testing jasmine karma-jasmine

我必须编写测试用例来调用函数中的函数。

  1. 这是我想编写测试用例的主要组件。想要为openModel函数编写单元测试。
  2. 
    
    @ViewChild(SecondComponent) public secondComponent: SecondComponent;
    
    openModal() {
      this.secondComponent.showModal();
    }
    
    
    

    1. 这是具有showModal功能的第二个组件。
    2. 
      
      @ViewChild(ModalComponent) public modalComponent: ModalComponent;
      
      public showModal() {
        this.modalComponent.showModal();
      }
      
      
      

      1. 到目前为止,这是我尝试过的测试用例。
      2. 
        
        it(
          'should open drop modal', () => {
            const showModalSpy = spyOn(SecondComponent, 'showModal').and.callThrough();
            component.openModal();
            expect(showModalSpy).toHaveBeenCalled();
          }
        );
        
        
        

1 个答案:

答案 0 :(得分:1)

那么,你真正想要做的就是为MainComponent openModal编写集成测试。所以你应该问问自己,这种方法在做什么?

撰写自动化测试的经验法则 您应始终专注于测试单元(在这种情况下为MainComponent正在执行的操作。在这种情况下,其他所有内容(SecondComponent)都可以被嘲笑。

现在回答您在编写测试时会问自己的问题,openModal方法正在调用showModal属性上名为secondComponent的函数你的MainComponent

因此,根据我们的经验法则,我们会模仿我们可以从showModal {{1}获得的secondComponent fixture方法属性。

因此,您对此的集成测试应如下所示:



componentInstance




希望这有帮助!