在rspec中使用stub来测试rand的输出

时间:2016-11-13 23:01:44

标签: ruby rspec stub

所以我有一个类Weather,应该返回随机结果,我想用stub来测试它。我在这篇http://www.martinfowler.com/articles/mocksArentStubs.html上读到了Martin Flower的文章。 我觉得这将是最简单的解决方案。但很难找到任何语法示例。你能给我一个测试的例子吗?这是我作业的一部分。

class Weather

  def conditions
   return :good if chance > 0.3
   :stormy
  end

  def chance
   rand
  end

end

1 个答案:

答案 0 :(得分:2)

根据您的示例,您希望测试chance的行为而不是实现。

describe Weather do
  it 'returns good' do
    weather = Weather.new
    allow(weather).to receive(:chance).and_return(0.8)
    expect(weather.conditions).to eq :good
  end
end