首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby 203(about_classes)- rake失败

Ruby 203(about_classes)- rake失败
EN

Stack Overflow用户
提问于 2015-09-19 09:44:36
回答 2查看 451关注 0票数 1

当我填充预期的输出并调用rake时,我会遇到这个问题。我的设置或代码有问题吗?

约瑟夫斯-MacBook: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

有关守则是:

代码语言:javascript
复制
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

代码语言:javascript
复制
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在任务中要求“from path_to_enlightenment.rb:28:in <main>' rake aborted! Command failed with status (1): [/System/Library/Frameworks/Ruby.framework/...] /Users/jj/Downloads/koans/Rakefile:10:inblock : TOP =>默认=>测试”(参见使用-- trace运行任务的完整跟踪)

不过,我可以在irb上好好执行。

代码语言:javascript
复制
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'>
EN

回答 2

Stack Overflow用户

发布于 2015-09-21 01:13:40

您忘记了断言代码中的“。

代码语言:javascript
复制
assert_equal "<Dog named 'Fido'>", fidos_self

更新

您应该断言fidos_self引用了自身,即实例化的Dog7fido

代码语言:javascript
复制
assert_equal fido, fidos_self

这正是这个测试应该做的。

票数 1
EN

Stack Overflow用户

发布于 2018-10-24 21:29:18

错误是类型对象错误;第一个元素是字符串类型,第二个是Dog7类型。解决方案是适当地匹配类型。

检查下列各项的返回值:

代码语言:javascript
复制
fidos_self.is_a?(String)
fidos_self.is_a?(Dog7)
fidos.is_a?(Dog7)
fidos_self
fidos
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32666702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档