c# - How do I return a new object from a mocked repository using a LINQ Expression? -


i using rhino mocks , have created mock repository.

var salesforcepolicies = mockrepository.generatemock<irepository<salesforcepolicy>>(); 

i have private method return policy item repository.

private salesforcepolicy getsalesforcepolicybyclientid(decimal clientid) {     var policy = salesforcepolicies.findbyexp(x => x.idnumber == clientid).firstordefault();     if (policy == null) throw new accountupdaterexception("policy not found in sales force lookup table.");     return policy; } 

i trying repository return new object 1 property set when query called in private method. not want break encapsulation , set public virtual.

the compiler screaming when write this...

var clientid = decimal.parse("123456"); salesforcepolicies.stub(x => x.findbyexp(y => y.idnumber == clientid)).return(new salesforcepolicy { policynumber = "123456" }); 

how can mocked repository return new object when queried?

error: best overloaded method match 'rhino.mocks.interfaces.imethodoptions<system.linq.iqueryable<data.models.ussi.salesforcepolicy>>.return(system.linq.iqueryable<data.models.ussi.salesforcepolicy>)' has invalid arguments. 

the trick pass in null expression argument , use .ignorearguments(). return create new list<t>() , call .asqueryable().

[testmethod] public void can_mock_sales_force_repo() {     // arrange     var salesforcepolicyrepo = mockrepository.generatemock<irepository<salesforcepolicy>>();      // act     var clientid = decimal.parse("123456");     var salesforcepolicy = new salesforcepolicy { policynumber = "123456" };     ienumerable<salesforcepolicy> salesforcepolicies = new list<salesforcepolicy> { salesforcepolicy };     salesforcepolicyrepo.stub(x => x.findbyexp(null)).ignorearguments().return(salesforcepolicies.asqueryable());     var policy = salesforcepolicyrepo.findbyexp(x => x.idnumber == clientid).firstordefault();      // assert     assert.istrue(policy == salesforcepolicy); } 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -