Ответ
Да, комбинировал. Использовал разные подходы в зависимости от проекта:
- Unit-тесты (Jest) для изолированного тестирования компонентов и утилит:
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
- Интеграционные тесты (Testing Library) для проверки взаимодействия компонентов:
test('should submit form with valid data', async () => {
render(<Form />);
fireEvent.change(screen.getByLabelText('Email'), {target: {value: 'test@test.com'}});
fireEvent.click(screen.getByText('Submit'));
await waitFor(() => expect(mockSubmit).toHaveBeenCalled());
});
- E2E-тесты (Cypress) для проверки полного сценария:
it('should complete purchase flow', () => {
cy.visit('/cart');
cy.get('[data-testid="checkout"]').click();
cy.url().should('include', '/checkout');
});
Сочетание этих подходов дает хорошее покрытие и уверенность в коде. Важно соблюдать баланс - не переусердствовать с unit-тестами для простых компонентов.