在RSpec中测试随机transaction_id

时间:2016-02-11 15:18:15

标签: ruby-on-rails rspec

我正在构建一个API POST调用,其中包含要在调用中发送的数据。该数据的一部分是transaction_id,我使用以下代码创建它:

transaction_id = Digest::SHA1.hexdigest([Time.now, rand].join)[0..10].to_i(16).to_s(10)

我也使用RSpec 2.12.2,它还没有定义allow,所以我无法做甚至测试

之类的东西
allow(Digest::SHA1).to receive(:hexdigest).and_return("transaction_id")

如何在RSpec中模拟transaction_id?我可以冻结时间,但是即使时间被冻结,在[Time.now, rand]中使用兰特也会返回不同的结果。

1 个答案:

答案 0 :(得分:0)

我发现这有效:

Digest::SHA1.any_instance.stubs(:hexdigest).returns("transaction_id")

基于此处的示例:https://github.com/freerange/mocha