michellekadiehl Ответов: 1

Студент кодирования в необходимости консультации для методов Рубин &амп; аргументы по умолчанию лаборатории


Я потратил больше часа, пытаясь понять, как решить эту ошибку, но ничего не работает.

Вот сообщение об ошибке:


say_hello
  accepts an argument of a name and prints out Hello with that Name (FAILED - 1)
  defaults to Ruby Programmer when no name is passed in (FAILED - 2)

Failures:

  1) say_hello accepts an argument of a name and prints out Hello with that Name
     Failure/Error: expect($stdout).to receive(:puts).with("Hello Kent Beck!")

       (#<IO:<STDOUT>>).puts("Hello Kent Beck!")
           expected: 1 time with arguments: ("Hello Kent Beck!")
           received: 0 times
     # ./spec/say_hello_spec.rb:6:in `block (2 levels) in <top (required)>'

  2) say_hello defaults to Ruby Programmer when no name is passed in
     Failure/Error: expect($stdout).to receive(:puts).with("Hello Ruby Programmer!")

       (#<IO:<STDOUT>>).puts("Hello Ruby Programmer!")
           expected: 1 time with arguments: ("Hello Ruby Programmer!")
           received: 0 times
     # ./spec/say_hello_spec.rb:11:in `block (2 levels) in <top (required)>'

Finished in 0.01319 seconds (files took 0.19887 seconds to load)
2 examples, 2 failures

Failed examples:

rspec ./spec/say_hello_spec.rb:5 # say_hello accepts an argument of a name and prints out Hello with that Name
rspec ./spec/say_hello_spec.rb:10 # say_hello defaults to Ruby Programmer when no name is passed in


Что я уже пробовал:

def say_hello (name = "Ruby Programming")
  "Hello, #{name}!"
end

say_hello ("Gabriela")



def say_hello (name = "Ruby Programming")
  puts "Hello, #{name}!"
end

say_hello ("Gabriela")

1 Ответов

Рейтинг:
1

Afzaal Ahmad Zeeshan

Я думаю, это происходит потому, что тестовое программное обеспечение настроено на прием только определенного результата, как вы можете видеть в следующем коде:

Failure/Error: expect($stdout).to receive(:puts).with("Hello Kent Beck!")
Вы можете исправить это, удалив лишнюю запятую, которую вы поместили в коде:
def say_hello (name = "Ruby Programming")
  puts "Hello #{name}!"
end

say_hello ("Gabriela")
Теперь снова запустите код.

Он должен пройти, но если он снова не сработает, попробуйте удалить свой вызов функции, say_hello("Gabriella"), и запустить его снова. Возможно, тестирующее программное обеспечение настроено на прием только определенного ответа и ничего более.


michellekadiehl

Привет Afzaal,

Поэтому я попробовал исправить код и получил тот же ответ.

Вот инструкции, которым я должен был следовать для своей лаборатории:

Цели:

Создайте метод, который можно вызвать с необязательным аргументом, определив этот метод с аргументом по умолчанию.

Инструкции:

Вы создадите метод под названием say_hello. Этот метод должен принимать аргумент имени человека. Затем он должен напечатать "Hello" с именем, за которым следует восклицательный знак (не забудьте этот пробел после "Hello"). Например:

# Я вызываю метод say_hello и даю ему строку "Gabriela"
say_hello("Габриэла")

# Метод выводит этот текст на экран:
Привет, Габриэла!

Есть еще одна вещь, которую должен делать этот метод: если вы вызываете этот метод и забываете дать ему имя человека, он должен просто сказать: "Привет, программист Ruby!". Для этого используйте аргумент по умолчанию!

Шаги:

1.бегите учитесь видеть, где вы стоите.
2.у вас, вероятно, есть два Nometoderrors. Это означает, что тест искал метод под названием say_hello, но не смог его найти.
3.Определите метод в файле say_hello.rb
4.бегите учиться снова. Вы получаете другую ошибку? Если вы еще не видели эту ошибку, угадайте, что она пытается вам сказать, а затем погуглите ее со словом "Рубин".
5.получите все тесты, чтобы пройти!
6.Как только все тесты будут пройдены, используйте learn submit, чтобы отправить свою лабораторию.

Afzaal Ahmad Zeeshan

Попробуйте удалить его say_hello("Gabriela") часть, возможно, Вам не нужно вызывать функцию, так как тестирующая часть сделает это за вас.