使用Load Balancer进行数据库插入的Rspec验证测试

时间:2016-09-12 14:09:17

标签: rspec load-balancing

我正在尝试创建一个涵盖以下场景的rspec测试。 有一个具有唯一列索引的模型。在真实环境中,我有一个负载均衡器,并且想要模拟创建行为,因此当插入两个重复记录时,将触发数据库验证。使用Thread类绕过rails默认验证:username,:uniqueness =>是一种好方法吗? true 并直接触发数据库验证..

1 个答案:

答案 0 :(得分:0)

我认为你的意思是你试图测试Rails验证没有捕获重复值的竞争条件,但数据库确实存在?

如果是这样,您可以使用validate: false跳过测试中的Rails验证:

it 'causes a database index constraint error' do
  Foo.create!(bar: 'baz')
  expect { Foo.create(bar: 'baz', validate: false) }.to raise_error
end

如果您想测试特定错误,您可能还应该查看raise_exception匹配器而不是raise_error