Z drugiej strony: jeśli połączenie jest konfigurowalne, zmniejsz limit czasu parametrów połączenia do 1 sekundy - to ułatwi. Wypełnij tabelę mnóstwem danych i pozwól 3 innym procesom obracać się w pętli aktualizującej fragmenty tej tabeli transakcją wokół pętli. Nie zmieniaj faktycznej procedury wywoływanej przez aplikację (wstrzykiwanie waitfor). To unieważnia test integracji.
Ale tak naprawdę jest to studium przypadku na korzyść testów jednostkowych i wstrzykiwania zależności. Niektóre rzeczy są po prostu trudne do przetestowania. Test jednostkowy + iniekcja zależności .
- Rzeczywiste: kod, który craps -> Limit czasu bazy danych (trudny do odtworzenia).
- Refaktoryzacja: Kod, który craps -> Repozytorium (tylko dostęp do danych) -> Baza danych
- Test jednostkowy: kod, który craps> Mock repozytorium do wyrzucenia -> null
- Teraz masz zakończony niepowodzeniem test kodu, który powoduje błędy i może to naprawić.
To jest wstrzyknięcie „zależności”. Programista może wstrzyknąć zależność do bazy danych, zastępując coś, co symuluje zachowanie zależności. Dobrze zrobić dla wszystkich testów bazy danych. W każdym razie, po przeprowadzeniu testu jednostkowego, wiesz, że poprawka robi to, co powinna, ale nadal potrzebujesz testów integracyjnych. W takim przypadku może lepiej skupić się na regresji - co oznacza, że testowanie niczego innego nie zepsuło, a funkcja nadal działa.
Już stworzyłeś swoją łatkę, więc myślę, że moja odpowiedź jest za późno.