• 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?

Aruba Cloud - Virtual Private Server VPS
+1 głos
359 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 (606,550 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ź 895 wizyt
pytanie zadane 24 kwietnia 2020 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
0 odpowiedzi 416 wizyt
0 głosów
1 odpowiedź 216 wizyt
pytanie zadane 21 marca 2020 w C# przez dawid2002 Mądrala (5,190 p.)

93,327 zapytań

142,323 odpowiedzi

322,396 komentarzy

62,656 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...