Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Constrain on IDbContext instead of DbContext for easier unit testing and mocking #30

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

benjaminramey
Copy link

Because the TDbContext generics are constrained with where TDbContext : DbContext, I have to call all the relevant methods with concrete class types. This makes for more difficult unit testing because I will eventually have to mock a concrete DbContext class somewhere.

If we instead constrain on the new IDbContext that only defines methods that the library needs (and DbContext already implements), then I can inherit this interface on my DbContext interfaces and mock much easier.

This is a breaking change, of course, because any client code that would upgrade to this change would need to implement the IDbContext interface on all their client DbContexts.

@thorhj
Copy link

thorhj commented Feb 14, 2017

Is there any chance for this to supported at some point? I too am having difficulty with unit testing because the IAmbientDbContextLocator.Get method is not constrained on an interface.

@Drizin
Copy link

Drizin commented Mar 3, 2018

I also wonder why this wasn't incorporated. I'm using this interface with Fake Contexts (generated using https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator ) and it's working fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants