Temat nie ma nic wspólnego z mockami, więc nie wrzucam tam.
Twierdzenie: istnieją poprawne refactory, które udają się bez żadnych testów
Dowód:
Weźmy metodę, którą napisałem.
public static IEnumerable<int> MyReverse(IEnumerable<int> enumerable)
{
if(!enumerable.Any()) return new List<int>();
return MyReverse(enumerable.Skip(1)).Concat(enumerable.Take(1));
}
metoda działa, ale gołym okiem widać, że da się to zrobić lepiej np. wykorzystując klasy biblioteczne, więc refactoruję.
public static IEnumerable<int> MyReverse(IEnumerable<int> enumerable)
{
return enumerable.Reverse();
}
Refactor zrobiony, nie napisałem ani jednego testu automatycznego, pierwsza i druga metoda działają zgodnie z założeniami. QED.
Nie chodzi tu wcale o to czy refactory bez testów są dobrym pomysłem, ale o to, że robienie prostytutki z logiki, bo nie odróżnia się kwantyfikatorów nigdy nie ma uzasadnienia.
Poza tym myślę, że wiele prostych helperów o skomplikowaniu podobnym do powyższego Reverse
nie jest pokryta testami co nie przeszkadza w modyfikowaniu tych funkcji, bo ktoś postanowił jak powyżej użyć rozwiązania z biblioteki, a nie naklepanego na szybko z ręki.
CC: @1a2b3c4d5e @Seken