【发布时间】:2015-11-30 04:19:38
【问题描述】:
我正在处理一个名为“Speaking Grandma”的 Ruby 问题,我需要创建一个方法,该方法应该接受一个包含短语的字符串参数,并检查该短语是否全部大写:如果不是t,那奶奶就听不到你的声音了。然后她应该回应(返回)HUH?!大声说出来,桑尼!
但是,如果您对她大喊大叫(即使用包含全大写短语的字符串参数调用该方法,那么她可以听到您的声音(或者至少她认为她可以)并且应该以 (return) NO 回应,不是自 1938 年以来!。
我写了以下代码:
def speak_to_grandma(input)
if
input != input.upcase
puts 'HUH?! SPEAK UP, SONNY!'
else
puts 'NO, NOT SINCE 1938!'
end
end
当我运行 RSpec 时,两个测试都失败了。它给出以下消息:
Failure/Error: expect(speak_to_grandma('Hi Nana, how are you?')).to eq 'HUH?! SPEAK UP, SONNY!'
expected: "HUH?! SPEAK UP, SONNY!"
got: nil
和
Failure/Error: expect(speak_to_grandma('WHAT DID YOU EAT TODAY?')).to eq "NO, NOT SINCE 1938!"
expected: "NO, NOT SINCE 1938!"
got: nil
(compared using ==)
我不知道我在这里做错了什么。有人可以帮忙吗?
【问题讨论】:
-
speak_to_grandma没有返回预期的字符串,它正在打印它。来自 RSpec 的eq正在检查将为零的返回值(因为这是puts返回的值)。查看this documentation,它可用于检查预期输出。 -
哇!谢谢!只需要你的一点指导,我已经想通了!太棒了!
标签: ruby-on-rails ruby rspec