如何在rspec中测试非变量采用递归方法?

时间:2012-08-01 09:31:46

标签: ruby-on-rails ruby recursion rspec

这是代码等待测试,看起来像鸡蛋问题。

def generate_number
  number = Array.new(8){rand(10)}.join
  return number unless Book.exists?(:number => number)
  generate_number
end

在方法中添加一个变量很容易处理,但我认为可能有更好的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

您的方法返回一个随机字符串,因此您无法测试显式返回值。您可以测试的是:

  1. 该方法返回一个由8位数组成的字符串
  2. 方法返回的字符串不是任何现有书籍的数字