Я использовал 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();
});
});