Mocking Linq - Preview

We are working on our .NET 3.5 Support. There are many new feature that have been added, we will take a look at how to mock a linq statement

For the following code in our application

Northwind db = new Northwind(connStr) ; var query = from c in db.Customers where c.City == Sarasota select new { c.Name, c.City };

Here is how to mock this statement and return fake customers

[TestMethod] [VerifyMocks] public void IsolateLinq() { // create fake return values var fake = new[] { new {Name=Fake 1,City=NY}, new {Name=Fake 2,City=London}}; using (RecordExpectations r = new RecordExpectations()) { // don’t hit the database, instead return test customers Northwind db = new Northwind(connStr) ; var answer = from c in db.Customers where c.City == not-used select new { c.Name, c.City }; r.Return(fake); } CallClassUnderTest(); // Continue with test }

Comments about this syntax are welcome

Bookmark at:
Add 'Mocking Linq - Preview' to Del.icio.us Add 'Mocking Linq - Preview' to digg Add 'Mocking Linq - Preview' to reddit Add 'Mocking Linq - Preview' to Feed Me Links! Add 'Mocking Linq - Preview' to Technorati Add 'Mocking Linq - Preview' to Yahoo My Web Add 'Mocking Linq - Preview' to Newsvine Add 'Mocking Linq - Preview' to FURL Add 'Mocking Linq - Preview' to blinklist Add 'Mocking Linq - Preview' to My-Tuts 

19 August 2007 | Product | Comments | Print This Post

4 Responses to “Mocking Linq - Preview”

  1. 1 Larry-K 31 December 2007 @ 7:31 am

    Can this Mocking Linq be done with the community version, or is a higher level required?

  2. 2 Eli Lopian 31 December 2007 @ 9:00 am

    Larry,
    The Enterprise Edition is required for Linq.

  3. 3 Assaf Stone 24 January 2008 @ 6:27 pm

    This is not true!

    Linq can be mocked with the community version.

    All you need to do is mock [Your]DataContext, and pass an IQueryable instead of your Table property (Use ExpectGetAlways(propertyName, mockList.AsQueryable()).

    HTH,
    Assaf.

  4. 4 lola 6 March 2008 @ 8:12 pm

    interesting post thx