当我填写预期输出并调用rake时遇到问题。我的设置或代码有问题吗?
josephs-MacBook-Air:koans jj $ rake /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby path_to_enlightenment.rb AboutClasses#test_inside_a_method_self_refers_to_the_containing_object 已经损害了你的业力。
师父说:你尚未达到启蒙。我感觉到 挫折。不要害怕寻求帮助。
你寻求的答案......期待"填写我的"等于
请冥想以下代码:
/Users/jj/Downloads/koans/about_classes.rb:162:in `test_inside_a_method_self_refers_to_the_containing_object'请记住,到目前为止,沉默有时是最好的答案 [................................... X______________] 203/282
有问题的代码是:
class Dog7
attr_reader :name
def initialize(initial_name)
@name = initial_name
end
def get_self
self
end
def to_s
@name
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 __, fidos_self
end
我把assest_equal填充到
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
爆炸。
/Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in
require': /Users/jtacuyan/Downloads/koans/about_classes.rb:162: syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '(' (SyntaxError) assert_equal <Dog named 'Fido'>, fidos_self ^ /Users/jj/Downloads/koans/about_classes.rb:162: syntax error, unexpected ',' assert_equal <Dog named 'Fido'>, fidos_self ^ from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in
需要&#39;来自path_to_enlightenment.rb:28:在<main>' rake aborted! Command failed with status (1): [/System/Library/Frameworks/Ruby.framework/...] /Users/jj/Downloads/koans/Rakefile:10:in
块中&#39; 任务:TOP =&gt;默认=&gt; test(通过运行任务查看完整跟踪 --trace)
我可以在irb上执行它。
irb(main):016:0> fido = Dog7.new("Fido")
=> <Dog named 'Fido'>
irb(main):017:0> fido
=> <Dog named 'Fido'>
irb(main):018:0> fido.name
=> "Fido"
irb(main):019:0> fido.get_self
=> <Dog named 'Fido'>
irb(main):020:0> fidos_self = fido.get_self
=> <Dog named 'Fido'>
irb(main):021:0> fidos_self
=> <Dog named 'Fido'>
答案 0 :(得分:1)
你忘记了“在断言代码中。”
assert_equal "<Dog named 'Fido'>", fidos_self
<强>已更新强>
你应断言fidos_self
指的是自己,即实例化的Dog7
:fido
。
assert_equal fido, fidos_self
这正是这个测试应该做的。
答案 1 :(得分:0)
该错误是类型对象错误;第一个元素是字符串类型,第二个元素是Dog7类型。解决方案是适当地匹配类型。
检查以下项的返回值:
fidos_self.is_a?(String)
fidos_self.is_a?(Dog7)
fidos.is_a?(Dog7)
fidos_self
fidos