Jest тестовый процесс не завершается после всех испытанийКак я могу заставить их завершить - PullRequest
0 голосов
/ 29 мая 2019

У меня есть тестовый класс Jest с двумя тестами, которые оба проходят нормально.Моя проблема в том, что когда я запускаю yarn run test, мои тесты выполняются, но Jest зависает.Покопавшись в Интернете, я обнаружил, что многие люди говорят о том, что они не обрабатывают async / await правильно, но, исходя из всего, что я вижу в документах Jest, моя реализация верна.Я также попытался запустить тесты с флагом --detectOpenHandles, но он не дает мне никакой информации.Последнее сообщение, которое я получаю в своей консоли: «Запустил все тестовые наборы».но он просто зависает после этого и никогда не закрывает процесс тестирования.Если я использую флаг --forceExit, то закрывается нормально, но я не хочу использовать это.Как я могу сдать мои тесты?

Это мой тестовый класс:

describe('urlShortener middleware', () => {

  const LONG_URL = "www.google.com";
  const SHORT_URL = "www.g.com";

  let shortenUrl;

  const req = {
    body: {
      url: LONG_URL
    }
  };

  const res = { end: jest.fn(), json: jest.fn(), status: jest.fn().mockReturnThis() };

  const mockResponse = {
    body: {
      "short_url": SHORT_URL
    },
    status: 201  
  };

  let axiosMock = {
    post: jest.fn().mockResolvedValue(mockResponse)
  };

  beforeEach(() => {
    req.body = {url: LONG_URL};

    jest.setMock('axios', axiosMock);
    shortenUrl = require('../urlShortener').default;

    res.end.mockReset();
    res.json.mockReset();
    res.status.mockReset();

    res.status.mockReturnValue(res);
  });

  it('should return the data appropriately when nothing goes wrong', async (done) => {
    await shortenUrl(req, res);

    expect(axiosMock.post.mock.calls[0][1].original_url).toBe(LONG_URL);
    expect(res.status).toHaveBeenCalledTimes(1);
    expect(res.status).toHaveBeenCalledWith(201);
    expect(res.json).toHaveBeenCalledWith({ shortUrl: SHORT_URL });

    done();
  });

  it('should set the correct status when the world burns', async (done) => {
    axiosMock.post = jest.fn().mockRejectedValue(new Error());

    await shortenUrl(req, res);

    expect(res.status).toHaveBeenCalledTimes(1);
    expect(res.status).toHaveBeenCalledWith(500);
    expect(res.json).toHaveBeenCalledTimes(1);

    done();
  });
});
...