c# - Unit Testing error "Object reference not set to an instance of an object." -
in controller want test if controller calling repository method. here method in controller
[httpget] public actionresult getmodulepropertyname(string moduletypevalue) { var temp = _modulerepository.getmodulekindpropertynames(moduletypevalue); ilist<property> model = temp .select(item => new property {name = item}) .tolist(); return partialview("getmodulepropertyname",model); } and here test method
[testmethod] public void getmodulepropertyname_action_calls_getmodulekindpropertynames() { _mockrepository.stub(x => x.getmodulekindpropertynames(arg<string>.is.anything)); _controller.getmodulepropertyname(arg<string>.is.anything); _mockrepository.assertwascalled(x=>x.getmodulekindpropertynames(arg<string>.is.anything)); } it throws error saying
test method adminportal.tests.modulecontrollertests.getmodulepropertyname_action_calls_getmodulekindpropertynames threw exception: system.nullreferenceexception: object reference not set instance of object. @ system.linq.queryable.select(iqueryable`1 source, expression`1 selector) @ adminportal.areas.hardware.controllers.modulecontroller.getmodulepropertyname(string moduletypevalue) in modulecontroller.cs: line 83 @ adminportal.tests.modulecontrollertests.getmodulepropertyname_action_calls_getmodulekindpropertynames() in modulecontrollertests.cs: line 213 i'm using rhinomock mocking tool. can mistake i'm making?
after stubbing method use return indicate should return, example:
_mockrepository .stub(x => x.getmodulekindpropertynames(arg<string>.is.anything)) .return(enumerable.empty<string>().asqueryable()); also, change line:
_controller.getmodulepropertyname(arg<string>.is.anything); to this:
_controller.getmodulepropertyname(string.empty); as exception explains - arg used in mock definitions.
Comments
Post a Comment