我走过了Ruby Koans和我有about_proxy_object_project.rb
麻烦这是我的解决方案红宝石Koans代理项目
class Proxy
attr_reader :messages
def initialize(target_object)
@object = target_object
# ADD MORE CODE HERE
@messages = []
end
def number_of_times_called(method_name)
@messages.count method_name
end
def called?(method_name)
@messages.include? method_name
end
def method_missing(method_name, *args, &block)
if @object.respond_to? method_name
@object.send(method_name, *args)
@messages << method_name
else
super method_name, *args, &block
end
end
end
,但是当我输入rake
我得到这个
The answers you seek...
Expected 10 to equal [:channel=, :power, :channel]
Please meditate on the following code:
/home/Shanicky/koans/about_proxy_object_project.rb:61:in `test_tv_methods_still_perform_their_function'
并在我的about_proxy_object_project.rb
def test_tv_methods_still_perform_their_function
tv = Proxy.new(Television.new)
tv.channel = 10
tv.power
assert_equal 10, tv.channel # this is the 61st line
assert tv.on?
end
我很困惑
我哪里做错了?
感谢所有
,这是我Television
类
class Television
attr_accessor :channel
def power
if @power == :on
@power = :off
else
@power = :on
end
end
def on?
@power == :on
end
end
没之前修改电视类中的任何方法,所以我认为信道的方法应该返回10,但它似乎返回类似的阵列[:通道=,:电源,:信道],所以我很困惑 –
你可以发布'Television'类的定义吗? – Agis
@Agis谢谢你,我修改了问题并发布了定义 –