Руби Коанс: Где кавычки в этом возвращаемом значении? - PullRequest
15 голосов
/ 22 ноября 2011

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

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 ]

26 голосов
/ 24 ноября 2011

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

1 голос
/ 22 ноября 2011

Изменение 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


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

0 голосов
/ 24 октября 2018

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

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

fidos_self.is_a?(String)
fidos_self.is_a?(Dog7)
fidos.is_a?(Dog7)
fidos_self
fidos
...