Jest simulado assíncrono chama dentro reagir componente

Eu sou novo no gracejo / enzima e estou tentando zombar de uma chamada para uma função aync que retorna uma promessa, a chamada é feita dentro de um componente de reação no método componentDidMount.

O teste está tentando testar se componentDidMount define a matriz retornada pela promessa no estado.

O problema que estou tendo é que o teste termina e passa antes que a matriz seja adicionada ao estado. Estou tentando usar o retorno de chamada 'concluído' para que o teste aguarde até que a promessa seja resolvida, mas isso não parece funcionar.

Eu tentei mover as chamadas esperadas para a linha antes da chamada done (), mas isso também não parece funcionar.

Alguém pode me dizer o que estou fazendo de errado aqui?

Componente sendo testado:

componentDidMount() {
  this.props.adminApi.getItems().then((items) => {
    this.setState({ items});
  }).catch((error) => {
    this.handleError(error);
  });
}

Meu teste:

    import React from 'react';
    import { mount } from 'enzyme';
    import Create from '../../../src/views/Promotion/Create';

    import AdminApiClient from '../../../src/api/';
    jest.mock('../../../src/api/AdminApiClient');

    describe('view', () => {

      describe('componentDidMount', () => {

        test('should load items into state', (done) => {
          const expectedItems = [{ id: 1 }, { id: 2 }];

          AdminApiClient.getItems.mockImplementation(() => {
            return new Promise((resolve) => {
              resolve(expectedItems);
              done();
            });
          });

          const wrapper = mount(
            <Create adminApi={AdminApiClient} />
          );

          expect(wrapper.state().items).toBe(expectedItems);
        });

      });
    });

questionAnswers(1)

yourAnswerToTheQuestion