How is this testing your queries though? How is an in memory
collection going to mimic your relational DB and validate your mapping
files are correct? Cascades work etc etc.

I still think NDBUnit is the way to go when testing your repository layer.



Cheers
Stefan

On Fri, Jan 16, 2009 at 10:31 AM, Troy Tuttle <[email protected]> wrote:
> Yes, by itself it is very similar.  But when we get to a full suite of
> integration tests, I have to manage cleanup so the db is in a good state
> before the next test runs.  But an in-memory collection will be cleaned up
> for me automatically by the garbage collector (or at least I don't have to
> worry about it).
>
>
> On Thu, Jan 15, 2009 at 4:36 PM, Roger Kratz <[email protected]>
> wrote:
>>
>> <<It's a lot easier to create an in-memory list of customers to query
>> against than setup records in the db.>>
>> Why? Maybe I'm missing something but...
>> inMemList.Add() vs repository.Add() is pretty similar?
>>
>>
>> ________________________________
>> Från: [email protected] [[email protected]] för Troy Tuttle
>> [[email protected]]
>> Skickat: den 15 januari 2009 22:29
>> Till: [email protected]
>> Ämne: [nhusers] Re: Testing NHibernate, Mocking ISession
>>
>> That's what we are currently doing now, but as the domain model grows, the
>> integration tests can get huge when testing queries with multiple criteria
>> (like a search screen).  I'm finding most of the work is in getting the
>> database in the correct state for these kinds of respository/integration
>> testing.  So, my thought is, just test the integration by using
>> PersistenceSpecification.VerifyTheMappings(), and test the queries in
>> isolation (mocked). It's a lot easier to create an in-memory list of
>> customers to query against than setup records in the db.
>>
>> Thanks for the feedback though.
>>
>> tt
>>
>> On Thu, Jan 15, 2009 at 2:47 PM, isaiah perumalla
>> <[email protected]<mailto:[email protected]>>
>> wrote:
>>
>> In my experience, i found it useful to simply write integration-tests
>> to test the repositories.
>> I generally avoid mocking 3rd party type such as ISession since the
>> interaction tests will most like be quite fragile
>>
>> On Jan 15, 1:22 pm, "John Teague"
>> <[email protected]<mailto:[email protected]>> wrote:
>> > Are you testing business logic that is using your repository, or are you
>> > testing the repository itself?
>> >
>> > On Thu, Jan 15, 2009 at 1:23 PM, Troy T.
>> > <[email protected]<mailto:[email protected]>> wrote:
>> >
>> > > Hi,
>> > > I'm using Linq to NH in a project, and would like to test my
>> > > repository code without hitting the database.  I have code in my
>> > > repository as:
>> >
>> > > public class Repository :  IRepository
>> > > {
>> > >     (... code snipped for brevity ...)
>> >
>> > >     public T FindBy<T>(Expression<Func<T, bool>> where)
>> > >     {
>> > >         return _session.Linq<T>().Where(where).FirstOrDefault();
>> > >     }
>> >
>> > > }
>> >
>> > > Where _session is injected into the repository class as ISession.
>> > > Does anyone have some ideas on how to test this repository query code
>> > > without hitting the database?  I'm using Rhinomocks for mocking.
>> >
>> > > My idea is to create a List<T> of Customer objects in the unit test
>> > > code (my test data), and mock out ISession and have it return that
>> > > test data when .Linq<T> is called on the session.  To do that I've
>> > > started creating my own test stub that implements IQueryable that
>> > > would be responsible for returning the test data, but I'm having
>> > > trouble making that work.
>> >
>> > > So, just wondering if anyone could suggest a better path to accomplish
>> > > this?  Or am I on the correct path?
>> >
>> > > Thanks!
>> > > Troy
>>
>>
>>
>>
>>
>>
>
>
> >
>



-- 
Stefan Sedich
Software Developer
http://weblogs.asp.net/stefansedich

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to