Руби Коанс: Где кавычки в этом возвращаемом значении?

Я работаю над следующим Руби Коаном:

class Dog7
  attr_reader :name

  def initialize(initial_name)
    @name = initial_name
  end

  def get_self
    self
  end

  def to_s
    __
  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 "<Dog named 'Fido'>", fidos_self
end

def test_to_s_provides_a_string_version_of_the_object
  fido = Dog7.new("Fido")
  assert_equal __, fido.to_s
end

Я пытаюсь заполнить первую половину первого assert_equal. Этот код выдает ошибку:

<"<Dog named 'Fido'>"> expected but was  <<Dog named 'Fido'>>.

Проблема в том, что я застрял на том, как сопоставить возвращаемое значение. Это выглядит как строковое литеральное возвращаемое значение, но я не знаю, как выразить это без использования кавычек и / или обратной косой черты. Ничто из того, что я пытаюсь сделать, не работает.

Помогите?

3 ответа

Посмотрев на это некоторое время, я снова понял, куда они идут с уроком. Изменение первого утверждения на "assert_equal fido, fidos_self" позволило пройти тест. Я был сброшен ошибкой, выдававшей тот же вывод, что и метод проверки, без кавычек. Спасибо, что помогли мне пройти через это.

изменения test_inside_a_method_self_refers_to_the_containing_object к следующим работам:

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.inspect # .inspect added.
end


Хорошо, были ли еще пробелы для заполнения? У меня есть ответ, но, кажется, вы уже заполнили пробел неправильно.

Ошибка является ошибкой объекта типа; первый элемент является строковым типом, а второй - типом Dog7. Решение состоит в том, чтобы соответствовать типам соответственно.

Проверьте возвращаемые значения:

fidos_self.is_a?(String)
fidos_self.is_a?(Dog7)
fidos.is_a?(Dog7)
fidos_self
fidos
Другие вопросы по тегам