2014-02-11 71 views
0

我在Rails應用程序中生成密鑰。使用rspec生成測試密鑰

self.generate(無參數)方法中生成Key類中的密鑰。我可以輕鬆實現該方法,但如何在rspec中測試我的方法是否嘗試重新生成密鑰(如果該密鑰已存在於我的數據庫中)?

回答

1

你可以嘗試stub返回你的第一個電話後的一個關鍵和unstub的方法:

it 'generates a second key if the first one is not unique' do 
    Key.create uid: "be81ed3a9c3a" 
    SecureRandom.stub(:hex).with(6) { 
     SecureRandom.unstub(:hex) 
     "be81ed3a9c3a" 
    } 
    expect(Key.generate.uid).not_to eq("be81ed3a9c3a") 
end