Jest - некоторые тесты не пройдены из-за утверждений, сделанных в предыдущих тестах - PullRequest
0 голосов
/ 29 января 2020

Я использовал Jest вместе с супер-тестом в моем приложении Express по большей части довольно плавно. Я столкнулся с проблемой, которая заставляет меня биться головой, пытаясь диагностировать.

Короче говоря, я создал тест, который явно выдает ошибку для поддельного вызова API стороннего производителя. Я утверждаю, что поддельная реализация выдает ошибку, которую она делает успешно. В новом блоке описаний я создал еще один тест, который только утверждает, сколько раз были вызваны мои макеты. Если я запускаю тест самостоятельно, он проходит. Однако, когда я запускаю весь набор тестов, я получаю следующую ошибку, как будто утверждения из этого предыдущего теста, в отдельном блоке описания, каким-то образом вливаются в этот тест.

Error: expect(received).toThrow(expected)

Первый тест

describe('Create Card', () => {
  beforeEach(() => {
    jest.mock('customers');
  });

  afterEach(() => {
    jest.clearAllMocks();
  });

  it('POST /card - responds with 500 if error', async () => {
    customers.retrieve.mockImplementationOnce(handlePromise(false, customer));

    const res = await request.post('/card').send(data);

    expect(res.statusCode).toBe(500);
    expect(customers.retrieve).toThrow('Error');
    expect(res.body).toHaveProperty('error', 'Error');
    done();
  });
});

Второй тест

describe('Create ACH', () => {
  beforeEach(() => {
    jest.mock('customers');
  });

  afterEach(() => {
    jest.clearAllMocks();
  });

  it('POST /ach - responds with 200 after success', async (done) => {      
    const res = await request.post('/ach').send(data);

    expect(res.statusCode).toBe(200);
    expect(customers.retrieve).toHaveBeenCalledTimes(1);
    expect(res.body).toHaveProperty('status', 'success');
    done();
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...