• 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
254 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 (601,110 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ź 713 wizyt
pytanie zadane 24 kwietnia 2020 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
0 odpowiedzi 229 wizyt
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 21 marca 2020 w C# przez dawid2002 Mądrala (5,190 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...