c# - Relationship Checks when Mocking EF Context -



c# - Relationship Checks when Mocking EF Context -

i'm wondering if there way simulate foreign key checks when unit testing repository on top of ef using moq? have next code should technically fail because 1 of relationships isn't nowadays in either database or mocked sets on context.

var entityset = new mock<dbset<myentity>>(); var mockcontext = new mock<mycontext>(); mockcontext.setup(x => x.set<myentity>()).returns(entityset.object); var myentity = new myentity { refid = "abcd", //foreign key not exist in context }; var repo = new myrepo<myentity>(mockcontext.object); repo.add(myentity); //repo.add() public void add(tentity entity) { dbset.add(entity); context.savechanges(); }

i expect code fail since object reference id doesn't exist succeeds , verifies add together mockcontext succeed. i'm not sure purpose unit testing pattern serves.

since you're mocking dbset, need tell want exception happen.

in other words, mocked dbset behave (since using loose mocks) if fine; mocked dbset has no concept of foreign key constraints--much less domain's specific constraints--since isn't dbset, , error never occur.

to tell mocked set want exception on add, you'd need setup entityset this:

var myentity = new myentity { refid = "abcd", //foreign key not exist in context }; entityset.setup(p => p.add(myentity)) .throws(new yourforeignkeyconstraintexception());

to have savechanges method throw, add together line instead of 1 above:

mockcontext.setup(p => p.savechanges()) .throws(new yourforeignkeyconstraintexception());

c# entity-framework moq

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -