Zaczynam nowy projekt i bardzo bardzo staram się używać TDD do kierowania projektem. Naciskam od lat i wreszcie uzyskałem zgodę na poświęcenie dodatkowego czasu na ten projekt, aby go wykorzystać, podczas gdy uczę się, jak robić to poprawnie.
To jest nowy moduł do połączenia z istniejącym systemem. Obecnie dostęp do wszystkich danych odbywa się za pośrednictwem usług internetowych, które w większości stanowią jedynie cienkie opakowanie procedur przechowywanych w bazie danych.
Jednym z wymagań jest to, że dla danego sklepu zwracam wszystkie zamówienia, które są uważane za ważne dla tej aplikacji. Zamówienie zakupu uważa się za ważne, jeśli jego data wysyłki przypada w danym zakresie od daty otwarcia sklepów (dotyczy to nowych sklepów).
Teraz nie mogę umieścić tej logiki w kodzie aplikacji, ponieważ nie zamierzam przywracać miliona PO, aby uzyskać tuzin, które mogą ubiegać się o ten sklep, biorąc pod uwagę powyższe ograniczenie.
Myślałem, że mogę przekazać zakres dat do procedury GetValidPOs i użyć tych wartości do zwrócenia prawidłowych zamówień zakupu. Ale co, jeśli dodamy kolejny wymóg do tego, co jest uważane za prawidłową PO?
Jak to przetestować i sprawdzić, czy działa dalej? Nie używamy ORM i jest mało prawdopodobne. I nie mogę zadzwonić do DB w moim teście.
Utknąłem.
Inną moją myślą jest to, że niektóre udają, że zwracają prawidłowe dane, inne, które zwracają niektóre złe dane, i lokalne repozytorium zgłasza wyjątek, jeśli wystąpią złe dane, i przetestuj, czy wyjątek zostanie zgłoszony, jeśli nieprawidłowe dane zostaną zwrócone przez proc GetValidPOs (lub próbka użyta do testowania).
Czy to ma sens? Czy jest jakiś lepszy sposób?
AKTUALIZACJA: Wydaje mi się, że mogę używać EF. Teraz muszę tylko wymyślić, jak go używać i sprawić, by był testowalny, a jednocześnie nadal polegać na procedurach przechowywanych i trudnościach z rozproszeniem danych w kilku bazach danych.