gpt4 book ai didi

ruby 公案 : test_nil_is_an_object

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:10 28 4
gpt4 key购买 nike

我最近尝试使用这个工具来提高我的 Rails 技能:

http://github.com/edgecase/ruby_koans

但我无法通过一些测试。此外,我不确定我是否正确地做了一些事情,因为目标只是通过测试,有很多方法可以通过它,我可能正在做一些不符合标准的事情。

有没有办法确认我做的事情是否正确?

具体例子:

在 about_nil 中,

 def test_nil_is_an_object
assert_equal __, nil.is_a?(Object), "Unlike NULL in other languages"
end

它是告诉我检查第二个子句是否等于一个对象(所以我可以说 nil 是一个对象)或者只是把 assert_equal true, nil.is_a?(Object) 因为这个说法是真的吗?

和下一个测试:

def test_you_dont_get_null_pointer_errors_when_calling_methods_on_nil
# What happens when you call a method that doesn't exist. The
# following begin/rescue/end code block captures the exception and
# make some assertions about it.
begin
nil.some_method_nil_doesnt_know_about
rescue Exception => ex
# What exception has been caught?
assert_equal __, ex.class

# What message was attached to the exception?
# (HINT: replace __ with part of the error message.)
assert_match(/__/, ex.message)
end
end

我想我应该在 assert_match 中放置一个“No method error”字符串,但是 assert_equal 呢?

最佳答案

assert_equal true, nil.is_a?(Object) 确实是正确的解决方案。问题是“Ruby 对象中是否存在 nils?”,而在 Ruby 的情况下,它们是。因此,为了通过断言,您应该断言该测试的真实性。

在第二个例子中,当你在 nil 上调用一个未定义的方法时,你会得到 NoMethodError: undefined method 'foo' for nil:NilClass。因此,异常类是 NoMethodError,消息是 undefined method 'foo' for nil:NilClass。在控制台中测试失败的行为,看看您从中得到了什么,然后将这些知识应用到测试中。

关于 ruby 公案 : test_nil_is_an_object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563111/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com