On 10.9.2008, at 0.29, Zach Dennis wrote:
I don't think this works as you may expect since My
SQL and PostgreSQL don't support nested transactions, which is what
would happen if your test environment wrapped stories/scenarios in
transactions and your application utilized transactions.

I've been bitten by this a couple of times. A common idiom in the Rails world is (was at least) to use save! to raise an exception when an object couldn't be saved. In a rescue block you could then do the things you wanted to do when saving failed. Raising the exception also rolled back a transaction, so it was a nice way to ensure some transactional logic:

MyModel.transaction do
  MyModel.save!
  OtherModel.save!
end

If either line in the transaction failed, it was ensured that neither of them was persisted in the db. This helped in many cases where you wanted either all or none of your updates to get into the db. However, with stories these cases always fail, because of the reason Zach mentions.

The question whether a case where someone posts an empty email address is an exceptional state in strict PragProg sense might be a bit questionable, of course, but it's beyond the point here...

//jarkko

--
Jarkko Laine
http://jlaine.net
http://dotherightthing.com
http://www.railsecommerce.com
http://odesign.fi


_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to