We are using EF4 and creating test cases for DAL layer (DAL layer is having linq query).
We are using TypeMock as mocking framework.
For testing, we are creating Fakecontext of ObjectContext and mocking CreateObjectSet method as follows
Isolate.WhenCalled(() => fakeContext.Context.CreateObjectSet<User>())
.WillReturnCollectionValuesOf(fakeUsers.AsQueryable());
The above is working fine. The issue is when we are trying to include related tables using 'Include'.
We have extended the include method as follows
public static IQueryable<T> Include<T>(this IQueryable<T> source, Expression<Func<T>> property)
{
var objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
var propertyPath = GetPropertyPath(property);
return objectQuery.Include(propertyPath);
}
return source;
}
So what happen is, in the above 'Include' method the source type should be ObjectQuery<T>. But as we have mocked 'CreateObjectSet', source type in 'Include' method is of collection.Generic.List type. Kindly let us know how should we mock in the above case. Your timely help will be highly appreciable. Thanks