即使变量应该匹配,rspec也会失败

时间:2018-11-28 23:55:27

标签: ruby rspec

我班上的方法:

  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行移到测试的底部显然可以解决该问题。但是我很困惑,因为通常期望值超出了实际方法的调用范围。我错了吗?我在这里想念什么?

0 个答案:

没有答案