Есть ли способ протестировать параллельные транзакции с использованием RSpec?Например, у меня есть остаток на банковском счете, который необходимо заблокировать внутри транзакции, прежде чем он будет уменьшен или увеличен.Однако в настоящее время, хотя я отключил параметр RSpec transactional_fixtures
, я не могу запустить 2 параллельные транзакции в двух отдельных потоках.Почему-то оба повешены.Данная учетная запись является моделью. Затем эта спецификация будет зависать:
it "should ensure operations are performed correctly" do
@account = Account.create(:balance => 0)
threads = []
(0..1).each do |index|
threads << Thread.new do
Account.transaction do
account = Account.find(@account.id, :lock => true)
account.balance += 100
sleep 0.5
account.save!
end
end
end
threads.each{|t|t.join}
@account.reload.balance.should == 200
end
Есть ли способ заставить ее не зависать, пока еще можно продемонстрировать способность транзакции?