•  

    Hej programujące mirasy!

    Piszę apkę do portfolio w #angular . Stronka jest już ogarnięta, no ale co to za apka bez testów... No i właśnie - wiem jak, ale zawiesiłem się na dość filozoficznym pytaniu "CO?"...

    Przykład: na start zacząłem od ekranu rejestracji - w komponencie tylko funkcja register() wywołująca odpowiedni serwis. Sprawdziłem czy funkcja jest wywołana, ile razy, z jakimi parametrami... Czy to jest potrzebne? Przecież w katalogu obok są testy sprawdzające sam serwis.

    Dalej testy sprawdzające co się stanie po udanym/nieudanym tworzeniu użyszkodnika - OK, to rozumiem bo to coś co komponent sam w sobie musi ogarnąć - przekierować użytkownika tu albo tam albo cokolwiek.

    Dalej - template! Mam template-driven form z jakąś tam walidacją - z rozpędu napisałem testy do sprawdzania tej walidacji. Ot 200 linii kodu - dla pojedynczego inputa... Weż to potem scrolluj... A może rozbić to na pojedyńcze pliki dla każdego inputa... Jest w ogóle sens sprawdzać template? Może zamiast tego powinienem sprawdzać typ i poprawność danych w testach samej funkcji register()? Tylko wtedy po co walidacja na poziomie html'a? Może nawet najbardziej gówniany formularz pisać jako reactive-form?

    A może w ogóle nie pisać testów dla takich komponentów? Przecież to jest stabilny komponent, który raczej się zmieniać nie będzie. Co innego z serwisem z którego on korzysta - tu testy na pewno.

    A i jeszcze! Gdzie jest granica testu jednostkowego? sprawdzenie samej funkcji register() - no jednostkowy. Ale przypisanie wartosci inputom i click() na przycisku, żeby wywołać register()... no niby sprawdzam tylko ten konkretny komponent, ale tak jakby symuluje użytkownika? To wciąż test jednostkowy?

    Stąd pytanie - co testujecie? Co decyduje o tym, że dany test w ogóle powstanie?

    A się rozpisałem... btw. dopiero się przymierzam bycia programistą więc proszę o wyrozumiałość jeżeli pytanie jest durne.

    Jeżeli ktoś ma do polecenia jakąś literaturę w tym temacie to również poproszę ( ͡° ͜ʖ ͡°)

    #programowanie #webdev #angular #frontend
    pokaż całość

    •  

      @Gangrendalf:

      Stąd pytanie - co testujecie? Co decyduje o tym, że dany test w ogóle powstanie?
      Odpowiedź na to pytanie jest bardzo prosta: to zależy ( ͡° ͜ʖ ͡°)

      Ja np. nie piszę testów jednostkowych do komponentów formatkowych, bo zazwyczaj nie ma to sensu. Napisanie takich testów jest dość czasochłonne i wymaga później utrzymywania, bo formatki lubią się zmieniać. W wielu przypadkach będzie też tak, że taki test będzie sprawdzał praktycznie to samo co test e2e dla tej formatki, przy czym test e2e będzie dużo łatwiejszy i szybszy do napisania.

      Testy jednostkowe mogą być natomiast dość przydatne do bazowych komponentów używanych w wielu miejscach w aplikacji (tzw. dumb components). Takie komponenty można łatwo odizolować i testowanie ich może faktycznie przynieść jakąś korzyść.

      Testy jednostkowe przede wszystkim jednak warto pisać dla serwisów, pipe'ów i innych elementów zawierających jakąś logikę wartą testowania i to jest moim zdaniem zakres, który jest wystarczający dla większości projektów (jeśli mamy jeszcze do tego testy e2e).

      Głównym czynnikiem determinującym sposób podejścia do testów jest i tak charakter projektu. Inaczej będzie to wyglądało dla jakiejś aplikacji pisanej hobbystycznie lub na potrzeby portfolio, a inaczej w dużym projekcie w którym gonią terminy i trzeba się wyrobić z aplikacją na czas. Trzeba sobie po prostu zadać też pytanie, czy opłaca się w ogóle pisać testy w danym przypadku.
      pokaż całość

...to tylko najnowsze aktywności użytkownika Gangrendalf

Zobacz wszystkie dodane znaleziska, komentarze i wpisy korzystając z menu powyżej.

Osiągnięcia (2)