Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用rspec生成测试密钥_Ruby On Rails_Rspec - Fatal编程技术网

Ruby on rails 用rspec生成测试密钥

Ruby on rails 用rspec生成测试密钥,ruby-on-rails,rspec,Ruby On Rails,Rspec,我正在Rails应用程序中生成密钥 键是在self.generate(无参数)方法中的key类中生成的。我可以很容易地实现该方法,但是如何在rspec中测试我的方法是否尝试在我的数据库中已经存在密钥的情况下重新生成密钥?您可以尝试存根在第一次调用后返回密钥并取消存根的方法: it 'generates a second key if the first one is not unique' do Key.create uid: "be81ed3a9c3a" SecureRando

我正在Rails应用程序中生成密钥


键是在
self.generate
(无参数)方法中的
key
类中生成的。我可以很容易地实现该方法,但是如何在
rspec
中测试我的方法是否尝试在我的数据库中已经存在密钥的情况下重新生成密钥?

您可以尝试
存根
在第一次调用后返回密钥并
取消存根
的方法:

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