Wpis z mikrobloga

#programowanie #csharp

Unit testy (testy jednostkowe). Moja klasa A polega na bezpośrednich informacjach obiektu klasy B (z zewnętrznej biblioteki). Np:

if(b.jakieśPoleTylkoDoOdczytu)
...

W tym układzie wszystko jest jasne i proste. Potrzebuje jednak wykonać unit testy mojej klasy A, które zależne są bezpośrednio od B. Nie powinno się jednak mockować (przepraszam jeśli inaczej się to odmienia) klas - w tym wypadku B. Czy powinienem wszystkie relacje pomiędzy A i B przenieść jakoś na osobny interfejs i dopiero wtedy go mockować? Czy może zupełnie źle do tego podchodzę?
  • 12
@Telhurin: Zrób wrapper do zewnętrznej klasy B, z potrzebnym Ci interfejsem. Wtedy można uznać taką klasę za część zewnętrznego systemu a takiego kodu się nie testuje jednostkowo, jedynie integracyjnie itd. Nie testuj jednostkowo/mockuj kodu który może się zepsuć nawet jak źle zinterpretowałeś dokumentację serwisu, to nic nie da :)

Oczywiście wtedy tą swoją klasę B łatwo mockujesz przewidując co ma zwrócić przy testowaniu klasy A
@ogrod87: Mam/miałem wątpliwości z pierwszego postu ponieważ o ile wrap jest jeszcze do przełknięcia, interfejs wyłącznie dla tego wrapu (tylko żeby potem przez niego mockować) wydaje się na pierwszy rzut oka bardzo sztuczny.