Nadszedł czas na podsumowanie wszystkiego, czego nauczyliśmy się w tym module! Twoim zadaniem jest stworzenie kompletnego zestawu testów dla Kosmicznego Centrum Kontroli Misji -- aplikacji zarządzającej misjami kosmicznymi, załogą i systemami statku.
Centrum Kontroli Misji składa się z następujących komponentów:
/api/missions)useMissions -- pobieranie i zarządzanie misjamiuseSystemHealth -- monitorowanie zdrowia systemówuseCrewFilter -- filtrowanie załogiSprawdź poniższy kod aplikacji i napisane testy. Aplikacja demonstruje kompletny test suite obejmujący:
1__tests__/
2 MissionDashboard.test.js -- testy głównego panelu
3 CrewManager.test.js -- testy zarządzania załogą
4 SystemStatus.test.js -- testy statusu systemów
5 hooks/
6 useMissions.test.js -- testy hooka misji
7 useSystemHealth.test.js -- testy hooka systemów
8 utils/
9 validators.test.js -- testy funkcji walidacji1test('adds new crew member', async () => {
2 // Arrange -- przygotuj
3 const user = userEvent.setup();
4 render(<CrewManager />);
5
6 // Act -- wykonaj
7 await user.type(screen.getByLabelText('Name'), 'Commander Nova');
8 await user.selectOptions(screen.getByLabelText('Role'), 'Captain');
9 await user.click(screen.getByRole('button', { name: 'Add Member' }));
10
11 // Assert -- sprawdź
12 expect(screen.getByText('Commander Nova')).toBeInTheDocument();
13 expect(screen.getByText('Captain')).toBeInTheDocument();
14});1describe('MissionDashboard', () => {
2 beforeEach(() => {
3 // Każdy test zaczyna z czystym stanem
4 jest.clearAllMocks();
5 global.fetch = jest.fn();
6 });
7
8 afterEach(() => {
9 jest.restoreAllMocks();
10 });
11});1test('shows error boundary on crash', () => {
2 const ThrowError = () => { throw new Error('Kaboom!'); };
3
4 // Wyciszamy console.error
5 const spy = jest.spyOn(console, 'error').mockImplementation(() => {});
6
7 render(
8 <ErrorBoundary fallback={<p>Something went wrong</p>}>
9 <ThrowError />
10 </ErrorBoundary>
11 );
12
13 expect(screen.getByText('Something went wrong')).toBeInTheDocument();
14 spy.mockRestore();
15});it('displays error when mission not found')useState działa, testuj swoją logikęPoniżej znajdziesz kompletny przykład Centrum Kontroli Misji z testami. Przeanalizuj kod i zwróć uwagę na: