首页 > 解决方案 > 如何模拟不是注入服务而是导入命名空间的依赖项?

问题描述

我正在尝试测试这项服务。如您所见,mixpanel不是注入服务。它是一个导入的命名空间。

import * as mixpanel from 'mixpanel-browser';

@Injectable({
   providedIn: 'root',
})
export class MixpanelService {
  constructor() {
    mixpanel.init('xxxxxxxx');
  }

  public register(value: string): void {
     mixpanel.register(value);
  }

}

describe('MixpanelService', () => { 让服务:MixpanelService;

 beforeEach(async() => {
   TestBed.configureTestingModule({
     providers: [
       //mixpanel is not an injected service...
     ]
   });
   service = TestBed.inject(MixpanelService);
 });

 it('should call register method', () => {
    //Arrange
    let mockMixPanel = ??? //how to mock a namespace????
    let spyOnRegister = jest.spyOn(mockMixPanel, 'register');

    //Act
    service.register({});

    //Assert
    expect(spyOnRegister).toHaveBeenCalled();
   });
  }

感谢您的帮助

标签: angularjestjs

解决方案


推荐阅读