Reputation: 1800
Is there any creative way to make this method Generic, I hate having to copy-paste it everywhere:
private CoachContext GetMockContext(Mock<DbSet<LastViewedRecord>> mockSet) {
var autoFixture = new Fixture();
DbContextOptions<CoachContext> options = autoFixture
.Build<DbContextOptions<CoachContext>>()
.Create();
var mockContext = new Mock<CoachContext>(options);
mockContext.Setup(c => c.LastViewedRecords).Returns(mockSet.Object);
return mockContext.Object;
}
I can make the LastViewedRecord
into T
and make the method Generic, but I cannot get around c => c.LastViewedRecords
Solution: I changed the method signature to something like this:
protected CreditCoachContext GetMockContext<T>(
IQueryable<T> mockData,
Expression<Func<CreditCoachContext,
DbSet<T>>> contextExpression
) where T : class
Upvotes: 2
Views: 63
Reputation: 30565
something like this might help. (PS: I am not sure about Fixture
)
private TReturn GetMockContext<TContext, TEntity, TReturn>(Mock<DbSet<TEntity>> mockSet,
Expression<Func<CreditCoachContext>> contextExpression)
where TContext : DbContext, new()
where TEntity : class
where TReturn : class
{
var autoFixture = new Fixture();
DbContextOptions<TContext> options = autoFixture
.Build<DbContextOptions<TContext>>()
.Create();
var mockContext = new Mock<TContext>(options);
mockContext.Setup(contextExpression).Returns(mockSet.Object);
return mockContext.Object;
}
Upvotes: 1