• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Testy jednostkowe, do jakiego stopnia mogę "mockować" zależności?

Object Storage Arubacloud
+1 głos
267 wizyt
pytanie zadane 7 czerwca 2021 w JavaScript przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 7 czerwca 2021 przez Jakub 0

Witam, uczę się pisać w NestJS i przy okazji staram się podejść znacznie poważniej do dobrych praktyk, jakimi są testy automatyczne. Korzystam z narzędzia Jest.

Mam taką funkcję składającą się na logikę biznesową:

async upload(file: Express.Multer.File, user: User, request: Request): Promise<Upload> {}

Testując ją, muszę zastosować "atrapy" m.in. dla Express.Multer.File i Request. I tu mam pytanie, czy dla testów muszę zastosować obiekty o odpowiadających typach, czy mogę jednak wykorzystać to, że JS w runtime nie wykonuje sprawdzania typów?

Jeśli chodzi na przykład o parametr file, to funkcja wykorzystuje tylko pola file.originalname oraz file.buffer. Działa mi więc taki mock:

const mockFile: any = {
  originalname: 'file.txt',
  buffer: '[data buffer]',
};

Czy takie działanie jest złą praktyką? Mogę to tak zostawić czy jednak zdecydowanie powinienem natrudzić się by stworzyć instancje tych samych typów co we wnętrzu funkcji?

Z góry dziękuję za mądrą radę od doświadczonych osób i pozdrawiam :)

komentarz zamknięcia: Uzyskałem informacje

1 odpowiedź

+3 głosów
odpowiedź 7 czerwca 2021 przez Comandeer Guru (602,620 p.)
wybrane 7 czerwca 2021 przez Jakub 0
 
Najlepsza

Po to mamy interfejsy, żeby dało się w łatwy sposób podmienić w testach zależności na mockowe (class TestDummyUser implements User). I to jest chyba najbardziej eleganckie użycie. Stąd pewnie nie wykorzystywałbym typu Express.Multer.File bezpośrednio, tylko miał swój interfejs File lub coś podobnego.

Tym bardziej, że sam zauważasz, że nie wykorzystujesz wszystkiego z tego typu, a raptem tylko dwie własności. To tym bardziej wskazuje, że tak naprawdę nie chcesz tam typu Express.Multer.File tylko własny, który posiada raptem dwie własności o określonych typach. I wówczas dylemat się sam rozwiązuje ;)

komentarz 7 czerwca 2021 przez Jakub 0 Pasjonat (23,120 p.)

To jest mądre... Też o tym myślałem. Dzięki laugh

Podobne pytania

+1 głos
1 odpowiedź 747 wizyt
pytanie zadane 24 kwietnia 2020 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
0 odpowiedzi 264 wizyt
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 21 marca 2020 w C# przez dawid2002 Mądrala (5,190 p.)

92,702 zapytań

141,615 odpowiedzi

320,180 komentarzy

62,060 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...