Oto moje zasady idealnego badania zachowań awarii:
- Jeśli używasz zależności, które mogą rzucać wyjątki, to należy obejmować testy jednostkowe że Nakręć mocks z nich rzucać wyjątki.
- Jeśli pod pewnymi warunkami twój kod powinien wyrzucić wyjątek, powinieneś dołączyć testy jednostkowe, które ustanawiają takie warunki.
Pierwszy pozwala wiedzieć, co twój kod zachowuje się pod awarii zewnętrznej, a często prowadzi do zmian decyzji, co zrobić. We wszystkich sytuacjach dobrze jest zobaczyć, co się właściwie dzieje. Drugi tylko upewnia się, że dotrzymasz obietnic, jeśli chodzi o błędy, które Twój kod powinien wykryć i uznają za wyjątkowe. Nie różni się to od testowania innych funkcji w kodzie.
Przed przystąpieniem do zaliczenia zestawu testów jednostkowych należy zapoznać się z numerem kodowanego kodu kodu będącego przedmiotem testu. W przypadku nietrywialnego kodu prawie zawsze istnieje jeden sposób, w jaki moja gałąź kodu nie sprawdza moich testów jednostkowych lub, co gorsza, zachowań, których nie zamierzałem. Zaskakująco często rozwiązaniem jest usunięcie tego kodu, zamiast dodawania kolejnych testów. Po prostu pozostawiony w tyle, kiedy wcześniej go skrzydłowałem.
Niekoniecznie mówię, że należy osiągnąć 100% pokrycia, ale należy wykonać testy jednostkowe z pokryciem kodu, ponieważ jest to bardziej wizualny sposób na zrozumienie i ujawnienie zachowań kodu, który istnieje. Patrzenie na to może dać ci nowe pomysły na to, jak zmienić kod, aby osiągnąć Single Responsibility Principle i Separation of Concerns.
Zawsze fajnie jest debugować problem produkcyjny, w którym awaria znajduje się w bloku catch – Mark
Jeśli to tylko rejestracja i ponowne wyrzucanie, nie zawracałbym sobie głowy. Prawdopodobnie. Dopóki testowałem logowanie w innym miejscu. Jeśli robi coś ważnego, zrobiłbym to. – serialhobbyist
Tak - chociaż wycofanie transakcji może być (nie zawsze) bardzo ciężkim procesem, który, jak sądzę, powinien zostać przetestowany. W tym przypadku najprawdopodobniej przetestuję to. –