Głębiej
Stabilność daje deterministyczność:
- Używaj fake timerów lub wirtualnych zegarów.
- Awaituj całą pracę async i opróżniaj kolejki.
- Dla współbieżności testuj niezmienniki (brak utraty danych, duplikatów).
- Stosuj stress testy dla większej liczby interleavings.
Przykłady
Wzorzec testu async:
await doWork();
await flushJobs();
expect(state).toEqual(...)
Typowe pułapki
- Sleep zamiast czekania na warunek.
- Brak await (testy przechodzą błędnie).
- Poleganie na realnym czasie lub sieci.
Pytania uzupełniające na rozmowie
- Jak deterministycznie testujesz race conditions?
- Kiedy używasz stress testów zamiast unitów?
- Jak testujesz idempotencję przy współbieżności?