TDD i has_ancestry w modelu

Próbuję robić projekt zgodnie z TDD i mam mały problem.

Mam model Board, który będzie miał strukturę hierarchiczną (do tego będę używał gemu has_ancestry).
Zgodnie z techniką TDD, najpierw powinienem napisać test dla tego modelu. Ja zrobiłem coś takiego(wiem, że ten gem dodaje m.in. taką metodę do modelu)

it "responses to #children" do expect(board).to respond_to :children end
Po tym dodałem gem, zainstalowałem, dodałem w modelu ‘has_ancestry’ i wszystko jest ok.

Tylko z tego co wiem, w TDD powinniśmy napisać jak najprostszy kod, który będzie zadowalał taki test.
Taki kod to by było pewnie:

def children end
Więc wygląda na to, że jakoś źle się do tego zabrałem, albo powinienem jakiś nowy test dodać, a może jest coś takiego jak expect(board).to has_ancestry ??
Będę wdzięczny za podpowiedź jak do takich rzeczy się zabrać.

board.should respond_to :children

jeśli chodzi o respond_to brzmi lepiej

Co do metody. Zawsze możesz zestubować sobie to children.

board.stub(:children).and_return(double('children'))

Używanie respond_to w sumie niewiele ci powie, czy funkcjonalność działa.
Jeżeli dziećmi/rodzicami są instancje tej samej klasy możesz zrobić coś takiego

child = Board.create board.children << child (albo jakiś inny sposób dołaczania do dzieci) board.children.all.should include(child)
No i generalnie dobrą praktyką jest nie testować dowolnych metod gema, a tylko te publiczne metody których będziesz używał w aplikacji. Dzięki temu testy nie sprawdzają, czy użyłeś tego konkretnego gema (który możesz zmienić, albo napisać własną implementację), a czy twoje api robi to, co zaplanowałeś.

 board.stub(:children).and_return(double('children'))

Hę? Przecież teraz test przejdzie nawet jakby Board nie miał tej metody.

[quote=kham] board.stub(:children).and_return(double('children'))
Hę? Przecież teraz test przejdzie nawet jakby Board nie miał tej metody.[/quote]
Czyli lepiej stworzyć metodę w modelu, która ma służyć tylko i wyłącznie do testowania, bo zaraz zostanie zastąpiona przez has_ancestry?

Ogólnie to trochę przesada z TDD według mnie. Dla świętego spokoju do modelu dołączyłbym tę metodę “has_ancestry” i nie bawił się w imitację funkcjonalności biblioteki.

I tak zrobiłem, wywaliłem ten test, bo tak na prawdę to nic nie mówi. Dodałem ‘has_ancestry’ i testował będę dopiero metody, funkcjonalności które ten gem wykorzystują.