2011-11-22 12 views
14
Aşağıdaki Yakut Koan üzerinde çalışıyorum

.Ruby Koans: Bu iade değerindeki tırnaklar nerede?

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

sorunu:

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 

ilk assert_equal ilk yarısı ben doldurmaya çalışıyorum budur Bu kod hata veriyor dönüş değeriyle nasıl eşleşeceğime bağlıyım. Bana bir dize literal dönüş değeri gibi görünüyor, ama ben alıntı işaretleri ve/veya ters eğik çizgi kullanmadan bunu nasıl ifade edeceğini bilmiyorum. Denediğim hiçbir şey işe yaramıyor.

Yardım?

+1

'__' yöntemi nedir? –

+0

Bu, boşlukları doldurma eğiticisidir. Buradaki fikir, testi yazılı olarak başarısızlığa uğratmak ve ardından geçmek için gerekli kodu doldurmaktır. İlk iddianın "<İsim: 'Fido'>" bölümünü ekledim. – nrflaw

cevap

1

aşağıdaki çalışmalarına test_inside_a_method_self_refers_to_the_containing_object değiştirme:

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 


Tamam, orada doldurmak için daha boşluklar vardı? Bir cevabım var, ama zaten bir boşluğu yanlış doldurmuş gibisiniz.

+0

Teşekkürler! Bu işe yarıyor. Bunların altında ayrı bir test olmasına rağmen, "def test_inspect_provides_a_more_complete_string_version fido = Dog7.new (" Fido ") assert_equal" ", fido.inspect end' – nrflaw

24

Bir süre ona baktıktan sonra, yine dersle nereye gittiklerini anladım. İlk iddiayı "assert_equal fido, fidos_self" olarak değiştirmek test geçidini yaptı. Testere ile aynı çıktıyı veren hata ile atıldım, sans alıntılar. Çalışmama yardım ettiğin için teşekkürler.

+0

Yardımlarınız için teşekkürler. Bu koan en iyisi değil. Asıl mesele, soru nedir? Önerinden daha iyi bir şey düşünemedim (ki benim için gerçekleşmemişti). – codenoob

İlgili konular