Wiem, że jedną z intencji Dana Northa w opracowywaniu BDD było przesunięcie słownictwa ze złożoności domeny testowej. Jednak przy wdrażaniu podejścia "na zewnątrz" wydaje się, że nadal wymagamy zrozumienia zachowania pozorowanego (lub upartego zachowania, jeśli wolisz). North sugeruje w this video, że jeśli zacznę od najbardziej zewnętrznych obiektów domenowych i będę szedł do wewnątrz, oszukuję współpracowników, gdy je odkryję, a następnie zastąpię ich odpowiednimi implementacjami. Ostatecznie kończę serią testów end-to-end.Jak/co kpić z BDD
Martin Fowler zdawał się postrzegać go nieco inaczej w this blog post, kiedy zdefiniował dwa obozy TDD: "klasyczny TDD", który używa prawdziwych obiektów, gdzie to możliwe, i w razie potrzeby symulację, oraz "mockista TDD", który preferuje drwiny w większości sytuacji . Zobaczył, że BDD dąży do tego drugiego. Oznacza to, że pod koniec rozwijania funkcji podejście "mockist" pozostawiłoby mocks w rzeczywistych testach (przykro mi, że używa się tego słowa w dyskusji BDD).
W uczciwości oba materiały mają lata, a być może rzeczy stały się bardziej wyraźne, ponieważ BDD ewoluował wzdłuż linii między stosowaniem na poziomie jednostki a poziomem akceptacji.
Ale moje pytanie do społeczności jest w zasadzie: kiedy moja historia się kończy, jak duży powinien być test końcowy? North explains, że BDD wymaga abstrakcji. Na przykład, kiedy testuję zachowanie logowania, moje scenariusze szczegółowo opisują, co oznacza proces logowania. Jednak, gdy robię inny scenariusz, który wymaga , ale nie jest to login, nie chcę robić tych kroków w kółko. Chcę łatwej abstrakcji, która po prostu mówi "Biorąc pod uwagę, że jestem zalogowany", więc mogę wykonać moje inne zachowanie.
Wygląda na to, że moje podejście do abstrakcji będzie polegało na tym, że kpię z niektórych współpracowników (lub zapewniam "podwójne testowanie"), a niektóre scenariusze mogą z nich korzystać częściej niż inne. Na przykład, czy zawsze wyśmiewasz zasoby zewnętrzne, takie jak baza danych lub serwer pocztowy?
Być może zadaję niewłaściwe pytanie. BDD polega na komunikacji, skróceniu cyklu zwrotnego i odkryciu tego, czego nie znasz. Może to, co-i-co-nie-udawać, jest nieistotnym pytaniem, o ile zachowanie, które nas interesuje, faktycznie działa. Ciekawi mnie, jakie są tutaj podejścia innych.