W testach automatycznych JavaScript często spotyka się składnię opartą na funkcjach describe, it oraz expect. Występuje ona m.in. w frameworkach testowych takich jak Jest i Jasmine.
describe()
describe() służy do grupowania testów dotyczących jednej funkcji, klasy lub modułu.
describe('fun1', () => {
// testy funkcji fun1
});
Nazwa w pierwszym argumencie opisuje, co jest testowane.
it()
it() definiuje pojedynczy przypadek testowy. Powinien sprawdzać jedno konkretne zachowanie programu.
it('zwraca liczbę dodatnią bez zmian', () => {
const result = fun1(2);
expect(result).toBe(2);
});
W tym przykładzie test sprawdza, czy funkcja fun1 dla argumentu dodatniego 2 zwraca 2.
expect() i toBe()
expect() rozpoczyna asercję, czyli sprawdzenie wyniku. Metoda toBe() porównuje wartość otrzymaną z oczekiwaną.
expect(result).toBe(2);
Oznacza to: „oczekuję, że result będzie równe 2”.
Typowy schemat testu
Dobry test jednostkowy ma zwykle trzy kroki:
- przygotowanie danych,
- wywołanie testowanej funkcji,
- sprawdzenie wyniku.
const result = fun1(2);
expect(result).toBe(2);
W pytaniu egzaminacyjnym funkcja zamienia liczby ujemne na dodatnie, a dodatnie pozostawia bez zmian. Dlatego poprawny test dla liczby dodatniej powinien oczekiwać tej samej dodatniej wartości.