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
Post a Comment