有沒有什麼方法可以使用RSpec來測試並行事務? 說我有一個銀行賬戶餘額,需要在一個交易中被鎖定,然後它被減少或增加。 但是,目前,雖然我關閉了RSpec transactional_fixtures
選項,但我無法在兩個分離的線程中啓動2個並行事務。出於某種原因,兩者都被掛起。 定帳戶的模型 然後這個規範將掛起:使用RSpec測試並行事務
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
有沒有什麼辦法讓它不掛,同時仍然能夠證明交易的能力嗎?
你是說AR緩存我的`Account.find()`結果嗎? – 2011-04-03 02:17:28