Ответ 1
Ответ здесь - "NoMethodError"
вам нужно, чтобы элементы с обеих сторон были равны, поэтому их оба ex.class будут делать это.
Затем вам нужно перейти к/__/Ниже.
Я пытаюсь изучить Ruby через Koans, но я застрял на шестом шаге.
Здесь код:
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
Я знаю, что я должен заменить __ чем-то связанным с сообщением об ошибке "NoMethodError", но я не могу понять это.
Это сообщение об ошибке, которое я получаю при запуске "path_to_enlightenment.rb":
The answers you seek...
<"FILL ME IN"> expected but was <NoMethodError>.
Я был бы очень признателен за некоторые рекомендации с этим - это сводит меня с ума! Я хотел бы узнать ответ и возможное объяснение. Спасибо!
Ответ здесь - "NoMethodError"
вам нужно, чтобы элементы с обеих сторон были равны, поэтому их оба ex.class будут делать это.
Затем вам нужно перейти к/__/Ниже.
Мне пришлось поставить утверждение assert_equal в parens, чтобы передать это. Должна быть ошибка.
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(NoMethodError, ex.class)
# What message was attached to the exception?
# (HINT: replace __ with part of the error message.)
assert_match("undefined method", ex.message)
end
end
Вам нужно заменить __ фактическим
assert_equal NoMethodError, ex.class
У Карло Ледесмы есть правильный ответ. (assert_equal NoMethodError, ex.class)
Не знаю, почему ответ Эллиота считается самым высоким, если кто-то попросит вас решить уравнение,
2x + 2 = 10
, вы не отвечаете 2x + 2 = 2x + 2
. Математически вы были бы правы, но это не ответ.
Я просто решил это. Я был сосредоточен на одной строке за раз, но этот метод включает в себя два элемента, которые нужно изменить: один в строке 16, один в строке 20. Оба должны пройти урок.
16: assert_equal NoMethodError, ex.class
20: assert_match(/*some_method_nil_doesnt_know_about*/, ex.message)
Надеюсь, что это поможет кому-то, кто застрял!
В строке 20 я использовал это: assert_match(/some_method_nil_doesnt_know_about/, ex.message)
Я не знаю, для чего предназначены эти символы /. Мне придется исследовать его, но это сработало.
Я думаю, что трюк состоял в том, что 'some_method_nil_doesnt_know_about был в одинарных кавычках в сообщении, поэтому он искал это.
Я только на Koen 83, но в большинстве Koens вы можете найти "ответ" в разделе, соответствующим названию "The answers you seek...
" сразу после "<"FILL ME IN"> expected but was
". Время от времени я нарушал рамки RubyKoan, и я получаю этот старинный графический ascii (я не уверен, что это должно быть чашевидные руки или дерево, но, надеюсь, вы это знаете, когда увидите это); в этих случаях сообщение об ошибке ниже графика ascii было полезным.
когда вы заполняете NoMethodError, вам также нужно заполнить сообщение об ошибке (что-то похожее на "метод w90 > some_methd.." ), вы должны заменить все/__/своим термином не только подчеркивания
Если вы удаляете кавычки, вы можете добавить немного сообщения об ошибке
assert_match(/undefined method/, ex.message)