如何在函数内部触发对事件发射器的订阅。角单元测试

问题描述 投票:0回答:1

我一直在尝试测试包含EventEmitter订阅的函数,单元测试正在调用订阅,但是无法测试订阅中的代码,我的意思是filtergetDocuments()即使正在调用订阅,也不会进行测试。

  describe('trigger_data test', () => {
    it('not filter in storage', async(() => {
      component.filter = null;
      spyOn(component, 'getDocuments');
      spyOn(mockSharedService.trigger_data, 'subscribe').and.returnValue(of(true));
      component.triggerData();
      expect(mockSharedService.trigger_data.subscribe).toHaveBeenCalled();
      expect(component.filter).toEqual(1); //Error: Expected null to equal 1.
      expect(component.getDocuments).toHaveBeenCalled(); //Error: Expected spy getDocuments to have been called.
    }));
  });

这是功能

  triggerData() {
    this.sharedService.trigger_data.subscribe(() => {
      if (sessionStorage.getItem('filter_pp') !== null) {
        this.filter = Number(sessionStorage.getItem('filter_pp'));
      } else {
        this.filter = 1;
      }
      this.getDocuments();
    });
  }

[当另一个组件发出布尔值时,订阅触发代码。

angular unit-testing angular7 karma-jasmine
1个回答
0
投票

而不是监视subscribe方法,而是监视trigger_data。希望它能工作。

© www.soinside.com 2019 - 2024. All rights reserved.