i’m building some basic crud methods for my fluently mapped entities.
i just wanna know if there is a simple way to make the transaction to perform a rollback when i’m running the cud test methods ?
the code that being tested perform the commit inside
here is a create sample:
public int? Create(IIdentifiable entity)
{
int? newId = null;
using (ISession session = SessionFactoryProvider.NewSession)
using (ITransaction transaction = session.BeginTransaction())
{
object newObj = session.Save(entity);
newId = (int?)newObj;
transaction.Commit();
}
return (int?)newId;
}
If you’re using xUnit.net, there’s an AutoRollback attribute in the contrib project. If you’re open to using System.Transactions then you can create a new transaction before the session.Open() and session should autoenlist (unless you’ve set ado.net to not autoenlist). Then just abandon at the end.
I did something similar to this a (long) while ago:
Then just have your test extend TransactionalTest. But, I think NUnit, MbUnit and xUnit.net all support transactional tests out of the box or with a contrib project.