我正在研究以下Ruby Koan:
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
第一个assert_equal的前半部分是我要填写的内容。这段代码给出了错误:
<"<Dog named 'Fido'>"> expected but was <<Dog named 'Fido'>>.
问题是,我坚持如何匹配返回值。它看起来像一个字符串文字返回值,但我不知道如何在不使用引号和/或反斜杠的情况下表达它。我没有尝试过任何工作。
帮助?
答案 0 :(得分:26)
再盯着它看了一会儿后,我想出了他们上课的地方。将第一个断言更改为“assert_equal fido,fidos_self”使测试通过。我被错误抛出,给出了与inspect方法相同的输出,没有引号。感谢您帮助我完成它。
答案 1 :(得分:1)
将 test_inside_a_method_self_refers_to_the_containing_object
更改为以下作品:
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
好的,还有更多的空白要填补吗?我有一个答案,但似乎你已经错误地填补了空白。
答案 2 :(得分:0)
该错误是类型对象错误;第一个元素是字符串类型,第二个元素是Dog7类型。解决方案是适当地匹配类型。
检查以下项的返回值:
fidos_self.is_a?(String)
fidos_self.is_a?(Dog7)
fidos.is_a?(Dog7)
fidos_self
fidos