0

我已经成功地使用jest-mock-extended来测试服务,它对我来说很好用。它简单、易于使用且打字安全。

现在我必须测试 Angular 组件。为此,我找到了Spectator。我设法为没有使用该SpectatorHost功能的服务的简单组件编写测试。现在我必须用我应该模拟的服务来测试一个组件,但我真的很难做到这一点。

出于这个原因,我想知道是否有办法将创建的模拟注入jest-mock-extended到内部生成的组件中SpectatorHost

通过这种方式,我还将使用相同的库来模拟我项目中的服务。

4

1 回答 1

0

我找到了如何集成这两个库:

   describe('MyComponent', () => {
      // SpectatorHost object and factory
      let host: SpectatorHost<MyComponent>;
      const createHost = createHostFactory({
         component: MyComponent,
         mocks: [MyService], // Automatically mock service used by the component
      });

      // MockProxy object from jest-mock-extended
      let myServiceMock: MockProxy<MyService>;

      // Init and reset service before each test
      beforeEach(() => {
         myServiceMock = mock<MyService>();
         
         mockReset(MyService);
      });

      it('...', () => {
         // Mock whatever function in the service
         myServiceMock.doSomething.mockReturnValue('Mock');
         host = createHost('<my-component></my-component>', {
            providers: [{ provide: MyService, useValue: myServiceMock }] // Pass mocked service to the component
         });

         // Rest of the test...         
    });
于 2020-11-14T10:11:44.260 回答