0Pricing
Zig Academy · Lekcja

Asercje za pomocą std.testing

Poznaj expect, expectEqual i inne funkcje.

Asercje za pomocą std.testing to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Przestrzeń nazw testing

Funkcje pomocnicze do asercji w Zig znajdują się w std.testing. Warto przypisać je do krótszej nazwy, aby każde sprawdzenie w blokach testów było czytelne.

const testing = std.testing;

expect dla wartości logicznych

Najprostszą funkcją pomocniczą jest expect. Przyjmuje jedną wartość logiczną i kończy test niepowodzeniem, gdy warunek jest fałszywy.

try testing.expect(value > 0);

Funkcje pomocnicze zwracają błędy

Każda funkcja pomocnicza do testowania zwraca błąd w razie niepowodzenia, dlatego zawsze należy poprzedzać ją słowem try. Dzięki temu test zostaje przerwany i zgłasza problem.

expectEqual dla wartości

Do porównania dwóch wartości należy użyć expectEqual. Funkcja sprawdza równość, a w razie niepowodzenia wyświetla zarówno wartość oczekiwaną, jak i rzeczywistą.

try testing.expectEqual(5, add(2, 3));

Najpierw wartość oczekiwana

W przypadku expectEqual pierwszy argument to wartość oczekiwana, a drugi to wynik uzyskany przez kod. Kolejność wpływa na treść komunikatu o niepowodzeniu.

try testing.expectEqual(42, result);

Porównywanie wycinków

Dwa wycinki są równe, gdy ich elementy są zgodne, a nie wtedy, gdy mają te same wskaźniki. Należy użyć expectEqualSlices i podać typ elementów.

try testing.expectEqualSlices(u8, "hi", out);

Porównywanie ciągów znaków

W przypadku tekstu expectEqualStrings porównuje dwa wycinki bajtów i wyświetla czytelną różnicę, gdy się one różnią. Doskonale nadaje się to do sprawdzania wyników.

try testing.expectEqualStrings("ok", msg);

Sprawdzanie błędu

Czasami wywołanie powinno zakończyć się niepowodzeniem. Należy opakować je w expectError, aby sprawdzić, czy zwraca konkretny błąd, a nie wartość.

try testing.expectError(error.Bad, parse("x"));

Przybliżone porównywanie liczb zmiennoprzecinkowych

Liczby zmiennoprzecinkowe rzadko są identyczne co do bitu. Należy użyć expectApproxEqAbs z niewielką tolerancją, aby drobne różnice zaokrągleń nie powodowały niepowodzenia testu.

try testing.expectApproxEqAbs(1.0, x, 0.001);

Odczytywanie danych o niepowodzeniu

Gdy asercja się nie powiedzie, Zig wyświetla w raporcie wartości oczekiwane i rzeczywiste. Ta różnica zwykle od razu wskazuje błąd.

Dobierz właściwą funkcję pomocniczą

Funkcję pomocniczą należy dopasować do danych: expectEqual służy do wartości skalarnych, funkcje dla wycinków i ciągów do sekwencji, a expectError do ścieżki kończącej się błędem.

Szybkie sprawdzenie

W teście trzeba sprawdzić, czy dwa teksty są dokładnie równe. Która funkcja pomocnicza będzie najlepsza?

Podsumowanie

Poznał(a) Pan/Pani zestaw narzędzi std.testing: expect, expectEqual, funkcje sprawdzające wycinki i ciągi znaków oraz expectError. Każdą z nich należy poprzedzić słowem try. ✅

Często zadawane pytania

Czy lekcja „Asercje za pomocą std.testing” jest bezpłatna?

Tak — pełny tekst „Asercje za pomocą std.testing” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Asercje za pomocą std.testing”?

Poznaj expect, expectEqual i inne funkcje. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Asercje za pomocą std.testing”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?

Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pisanie bloków test
  2. Asercje za pomocą std.testing
  3. Testing Allocator wykrywa wycieki
  4. Uruchamianie i filtrowanie testów
← Powrót do Zig Academy