React / Next.js

React Testing

React Testing Library, Jest, Vitest, Komponententests, Mocking, Benutzerinteraktionen, Coverage

20 Interview-Fragen·
Mid-Level
1

Was ist der Hauptunterschied zwischen getBy, queryBy und findBy in React Testing Library?

Antwort

getBy wirft einen Fehler, wenn das Element nicht existiert (synchrone Assertions), queryBy gibt null zurück, wenn das Element nicht existiert (Abwesenheit prüfen), und findBy gibt ein Promise für asynchrone Elemente zurück. Verwende standardmäßig getBy für Elemente, die existieren müssen, queryBy, um zu überprüfen, dass ein Element nicht vorhanden ist, und findBy, um auf das Erscheinen eines Elements nach einer Verzögerung zu warten.

2

Was ist der Hauptvorteil von getByRole gegenüber getByTestId?

Antwort

getByRole fördert Best Practices für Barrierefreiheit, indem Elemente über ihre semantische ARIA-Rolle (button, textbox, heading) angesprochen werden, was die Barrierefreiheit der Komponente für Screenreader verbessert. getByTestId erfordert das Hinzufügen künstlicher data-testid-Attribute, die keinen Mehrwert für Endbenutzer bieten. React Testing Library empfiehlt, getByRole, getByLabelText und getByText vor getByTestId zu bevorzugen.

3

Wie testet man das bedingte Rendern eines Elements, das NICHT im DOM vorhanden ist?

Antwort

Verwende queryBy, um die Abwesenheit eines Elements zu überprüfen, da es null zurückgibt, anstatt einen Fehler zu werfen. Beispiel: expect(screen.queryByText('Error')).toBeNull() oder expect(screen.queryByText('Error')).not.toBeInTheDocument(). getBy würde einen Fehler werfen und den Test fehlschlagen lassen, während findBy auf das Erscheinen des Elements wartet (Timeout bei Abwesenheit).

4

Warum empfiehlt React Testing Library, Implementierungsdetails NICHT zu testen?

5

Was ist der Unterschied zwischen render und screen in React Testing Library?

+17 Interview-Fragen

Meistere React / Next.js für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten