2012-08-01 79 views
1

下面是代碼等待測試,看起來像雞蛋問題。如何在rspec中測試一個採用遞歸方法的非變量?

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

向方法中添加一個變量很容易處理,但我認爲可能有更好的方法來解決這個問題。

+0

不是你的問題的解決方案的字符串,但爲什麼你的方法遞歸開始? – 2012-08-01 10:51:19

回答

0

你的方法返回一個隨機字符串,所以你不能測試顯式的返回值。你可以測試是:

  1. 該方法返回由8個位數
  2. 的字符串返回的方法是不是一個數字的任何現有圖書