Hello
I am trying to work through some repository ideas I found on Fabio's
blog (http://fabiomaulo.blogspot.com/2009/09/repository-or-dao-
repository.html) and running into some session state issues in a
SQLite test fixture.
If I try to wrap each test in a transaction and roll it back I get an
error on the second test saying the session is closed.
If I do not wrap the tests in transactions but rather try to delete
each saved item in a tear down method I get an error saying a column
unique constraint is being violated (I do want the column to be unique
but why should it be a violation after the item has been deleted??)
I am reluctant to just blow away the SQLite db and recreate it on each
and every test, but maybe that is the right answer.
Some sample code below; tests run in isolation.
What is the best way to do the testing for this scenario without
errors?
Cheers,
Berryl
=== code with tx wrappers: fails on 2nd test as Session is Closed ===
[Test]
public void
Add_IfTheProjectIsTransient_ItIsSavedAndAvailable()
{
using (var session = _SessionFactory.GetCurrentSession())
using(var tx = session.BeginTransaction()) {
.... add it & assert it's available and persistent
tx.Rollback();
}
}
[Test]
public void Add_IfTheProjectIsPersistent_ItIsNoProblem() {
using (var session = _SessionFactory.GetCurrentSession())
using (var tx = session.BeginTransaction()) {
... add it twice & assert no error
tx.Rollback();
}
}
=== attempted tear down gets unique column violation =====
[TearDown]
public void TearDown()
{
foreach (var p in _repos.GetOpenProjects())
{
_repos.Remove(p);
_SessionFactory.GetCurrentSession().Evict(p);
}
_SessionFactory.GetCurrentSession().Clear();
}
== add method in repository ====
public void Add(T item) {
_sessionFactory.GetCurrentSession().SaveOrUpdate(item);
}
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.