有没有什么方法可以使用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