2011-11-22 6 views
14

pracuję na poniższym Ruby Koan.Ruby Koans: Gdzie są cytaty w tej wartości zwracanej?

class Dog7 
    attr_reader :name 

    def initialize(initial_name) 
    @name = initial_name 
    end 

    def get_self 
    self 
    end 

    def to_s 
    __ 
    end 

    def inspect 
    "<Dog named '#{name}'>" 
    end 
end 

def test_inside_a_method_self_refers_to_the_containing_object 
    fido = Dog7.new("Fido") 

    fidos_self = fido.get_self 
    assert_equal "<Dog named 'Fido'>", fidos_self 
end 

def test_to_s_provides_a_string_version_of_the_object 
    fido = Dog7.new("Fido") 
    assert_equal __, fido.to_s 
end 

Pierwsza połowa pierwszego assert_equal jest to, co staram się wypełnić ten kod daje błąd:

<"<Dog named 'Fido'>"> expected but was <<Dog named 'Fido'>>. 

Problem jest, utknąłem na tym, jak dopasować wartość zwrotu. Wygląda mi to jak literowa wartość zwracana przez łańcuch znaków, ale nie wiem, jak wyrazić to bez użycia cudzysłowów i/lub odwrotnych ukośników. Nic, co próbuję, wydaje się działać.

Pomoc?

+1

Co to jest metoda '__'? –

+0

To jest samouczek wypełniania pustych miejsc. Pomysł polega na tym, aby test zakończył się niepowodzeniem tak, jak został napisany, a następnie wypełnić potrzebny kod, aby go przekazać. Dodałem "" część pierwszego stwierdzenia. – nrflaw

Odpowiedz

1

Zmiana test_inside_a_method_self_refers_to_the_containing_object do następujących prac:

def test_inside_a_method_self_refers_to_the_containing_object 
    fido = Dog7.new("Fido") 

    fidos_self = fido.get_self 
    assert_equal "<Dog named 'Fido'>", fidos_self.inspect # .inspect added. 
end 


Ok, było tam więcej luk do wypełnienia? Mam odpowiedź, ale wygląda na to, że źle wypełniłeś już lukę.

+0

Dzięki! To działa. Chociaż poniżej znajduje się osobny test: 'def test_inspect_provides_a_more_complete_string_version fido = Dog7.new (" Fido ") assert_equal" ", fido.inspect end' – nrflaw

24

Po tym jak wpatrywałam się w niego przez chwilę, znowu zorientowałam się, dokąd zmierzają z lekcją. Zmiana pierwszego potwierdzenia na "assert_equal fido, fidos_self" spowodowała przejście testu. Zostałem rzucony przez błąd dający takie same wyniki jak metoda inspekcji, sans quotes. Dziękuję za pomoc w przepracowaniu tego.

+0

Dzięki za pomoc. Ten koan nie jest najlepszy. Pytanie tylko, o co chodzi? Nie mogłem wymyślić nic lepszego niż twoja sugestia (co nie przyszło mi do głowy). – codenoob

Powiązane problemy