我班上的方法:
def get_class_info
@class_name = get_class_name
end
def get_class_name
puts "Enter the name for your class. Enter 'done' to return to the main prompt."
input = gets.chomp
if input.valid_class_name?
class_name = input.titleize
elsif input.downcase == "done"
run
else
puts "Invalid class name."
get_class_name
end
class_name
end
我的测试:
it "stores the name in the @class_name property" do
expect(cli.class_name).to eq('Song')
allow(cli).to receive(:gets) {'song'}
cli.get_class_info
end
它失败了,说它期望“ Song”,但没有成功。
如果我注释掉了期望行并在测试的末尾添加了一个撬,则查询cli.class_name
返回"Song"
!!!
为什么这个测试失败了?
更新:好的,将expect
行移到测试的底部显然可以解决该问题。但是我很困惑,因为通常期望值超出了实际方法的调用范围。我错了吗?我在这里想念什么?