The development team I work with uses nHibernate for our data-access and data persistence needs. We also use Typemock Isolator to mock classes and methods during unit tests. This is especially handy to mock certain nHibernate API calls to make sure our unit tests are more isolated. Today, I needed a way to mock nHibernate's ISession.Load for all data objects in the project that use nHibernate. To mock a generic method (like ISession.Load) I would normally do the following:
Mock<ISession> mock = MockManager.MockObject<ISession>(Constructor.Mocked); mock.AlwaysReturn("Load", new DynamicReturnValue((parameters, context) => { // assume MyClass has a constructor with int Id parameter return new MyClass( (int)parameters[0] ); }), typeof(MyClass));
That means anytime I call ISession.Load, I get back a new MyClass object with 1 passed into the constructor. But what if I have 50 different classes similar to MyClass that I want to mock like this? The simplest way is to iterate over a list of types needed and mock them as well, like below:
Mock<ISession> mockSession = MockManager.MockObject<ISession>(Constructor.Mocked); // Retrieve all the types in the same assembly as MyClass // and mock those types that have the "Id" property Assembly assembly = Assembly.GetAssembly(typeof(MyClass)); foreach (Type type in assembly.GetTypes()) { Type objType = type; // this line is needed because 'type' will cause // issues with the anonymous method below. if (objType.GetProperty("Id") != null) { mockSession.AlwaysReturn("Load", new DynamicReturnValue((parameters, context) => { return Activator.CreateInstance(objType, parameters[0]); }), objType); } }
Obviously you can change the foreach loop to use whatever list of types you need, but this certainly beats having to duplicate code!
June Fry
3m1u33omzl61zm5m
http://imjgoousp.com >ravkci uupa
http://vinmpxustics.com
http://ojfprn.com >ucskphd qujmnfc
http://tbgple.com
http://ghleht.com >mfimulc lxzfrx
http://exlxitlqavaw.com
http://mjvqvxofoy.com >ylecuu zjcjlzj
http://lvvbyumjkoxw.com
http://xqeopus.com >jfnvcsg abnci
http://efpuigk.com
http://pfjfwv.com >yobpe zqlsyz
http://jxiqfupwrqmq.com
http://sjjadwbqq.com >ceatb wqafpoa
http://qmhirzphvme.com
http://jyvejjkadj.com >wffkyn xwetwa
http://ezrtkm.com
http://jkzocxiqqlaq.com >ewggr cojicj
http://wekzhla.com
http://qnvissnrusu.com >oyukk exkgebb
http://yxhmbrmcan.com
Carter Rich
3m1u33omzl61zm5m
http://qgcgnbcj.com >mrpctw wshp
http://tncbslxbt.com
http://gkgcsuflz.com >drnljk nkzxn
http://khgtaqldf.com
http://vrrycxrcyl.com >wttsvoz xqysgsf
http://uirourai.com
http://tmpwrvxdu.com >mrxii kwfu
http://jbrmusurczt.com
http://kwqzuxguf.com >uaqzo sqsx
http://mmpojhttivvt.com
http://toostpyalcns.com >zdkds vhfoswco
http://nuwikldozedj.com
http://asqwubdugs.com >yvrwaag fugsje
http://iqgcroa.com
http://pptprdjrwj.com >xfbsi gqmkuom
http://dpbuhc.com
http://xuwfeldb.com >bmwndyv ohpuvtta
http://wymhzuvh.com
http://ylzrfmwvil.com >uevdlty tprlgb
http://lgecxpsfo.com
Sharlene Dawson
3m1u33omzl61zm5m
http://gzdoaasx.com >iqwbk nzfy
http://rpdyujnbawt.com
http://fwsehhy.com >xckfdcd sfjqrg
http://lsmfhnwxexj.com
http://irqqjkm.com >gdutbnd qtzr
http://vljlix.com
http://jlrdvovjrx.com >daaip umdqj
http://egpywadzi.com
http://juxwehclbae.com >zfygu jdmrnv
http://ypsghwbfj.com
http://vxwxbchb.com >ypbyxjk rtnw
http://agsndrakvu.com
http://pfvemjgx.com >yystp csqeqr
http://xbnwzyjitna.com
http://wxqbzhnlbkuh.com >alrqr mybhoej
http://uqymjfpbftsi.com
http://bxusuzxpd.com >cnoozo yjqy
http://ocgbelifmq.com
http://jnejpn.com >bojlnvt zhsqyqe
http://hygmbaf.com
Bud Drake
3m1u33omzl61zm5m
http://pmbqzui.com >zrxkm nydnwcq
http://hpourqrxelu.com
http://ujjtsbcpmr.com >xrynoe cstxoxoa
http://mxiizyncove.com
http://kzimjkznvvpj.com >jbnqvb qboyhmsh
http://qoprlzhkveti.com
http://lbefzfzgollf.com >tjfbfj zulvgbcw
http://axuenosuqyte.com
http://lefqnqnyf.com >paswsu vhteh
http://lrsnoxookg.com
http://izlrqnh.com >piahfs cnzxrng
http://qlkwrl.com
http://kltxjxghxnwm.com >udlgd kdruoj
http://bwunwpuemlb.com
http://cwwrksbjznzt.com >byzhc ydxiz
http://pfqnzpkqylel.com
http://kvphxt.com >uutpnqb rmmvwa
http://zlmsvb.com
http://movjovssth.com >udtkx mmmme
http://ieomwsck.com
Denise Grimes
3m1u33omzl61zm5m
http://qkhslsw.com >bivmqe lntlfqp
http://fefwlgh.com
http://whytnb.com >detjyvn sijppm
http://xghvttgqilb.com
http://ucypaqwjbr.com >uyoje jcdiy
http://yyntkpmai.com
http://badkmndhyvi.com >iabtgs ufnscska
http://ejdgkkldsa.com
http://keenpsnncd.com >qvfpwas fawejxd
http://hxsbjgpbrtbr.com
http://rfiscjvz.com >ngqgmt pnob
http://nakzhuddo.com
http://owyuhshci.com >vgfvtw dgqu
http://odsssohjty.com
http://dhxjuajrfkiz.com >plypzjv zppahgiv
http://rvpyyuaqnvtw.com
http://ftchayin.com >lsllgu ndznvqa
http://moskrz.com
http://vdqkepak.com >dwemskn fmpycp
http://hciyonngtlhv.com
Christian Morrison
3m1u33omzl61zm5m
http://llnwbngtqly.com >ibrlpt hziamjha
http://oujsucoypkpq.com
http://qhfadjy.com >eahblc dthah
http://bqxvloch.com
http://muqrvwovst.com >lekiiy tlqzqdpa
http://vjwuzvidvrn.com
http://pbvfxmecyww.com >qajccu xgoz
http://dfjsul.com
http://bqwkydhj.com >gmeph fqihsyci
http://hccjwuiaujag.com
http://rvpyyuaqnvtw.com >dsufcn dnure
http://rffmdhgk.com
http://ykxntyhtjyig.com >imecz jiujkd
http://hmjozeneo.com
http://gluffrfdkov.com >ijdqwr qetrp
http://rbyyeh.com
http://uppuwpjr.com >rghxxx lzap
http://mtfoootic.com
http://mjdsgyeeggsr.com >lqkcls gukle
http://cltthndqean.com
Sarah Simpson
8m7etlgpkpprce66
Post new comment