It's difficult to diagnose since you don't have a complete code sample. What is "_templateBl"? How is it created? How does it get a reference to your mock?
--- Patrick Steele http://weblogs.asp.net/psteele On Tue, Feb 3, 2015 at 6:07 AM, Charliers Frédéric < [email protected]> wrote: > Hi All, > > A customer asked me to add some Unit test on his application. First Idea > => Unit Test + Rhino Mock, because I had already used Mocking few years ago > and was satisfied by the quality of RM. > But I have a problem. I try since 2 days to find a solution on the web => > no answer. > > Here it is (Challenge! :)) : > > I Try to mock a repository layer access class (ITemplateRepository) > accessed by a method of my Business Layer (ITemplateBl). > > Here is the begining of my Business Layer method : > > // -------------------------------------- > public IEnumerable<TemplateProjectDto> GetTemplateProjects(CallContext > callContext) > { > > var templateProjects = _templateRepository.GetTemplateProjects(); > var templateProjectWorkOrders = > _templateRepository.GetTemplateProjectWorkOrders(); > var templateProjectQuestions = > _templateRepository.GetTemplateProjectQuestions().OrderBy(x => x.OrderBy); > var templateQuestions = _templateRepository.GetTemplateQuestions(); > > ..... > > > nothing very difficult.. I just load data from the repository. > > Here is my test : > > [TestMethod] > public void GetAllTemplateProject() > { > > ITemplateRepository _templateRepositoryStub = > MockRepository.GenerateStub<ITemplateRepository>(); > > > > _templateRepositoryStub.Stub(repo => repo.GetTemplateProjects()) > .IgnoreArguments() > .Return(TemplateProjectMock.GetList()); > > _templateRepositoryStub.Stub(repo => repo.GetTemplateWorkOrders()) > .IgnoreArguments() > .Repeat > .Any() > .Return(TemplateWorkOrderMock.GetList()); > > _templateRepositoryStub.Stub(repo => repo.GetTemplateWorkOrderLinks()) > .IgnoreArguments() > .Repeat > .Any() > .Return(TemplateWorkOrderLinkMock.GetList()); > > _templateRepositoryStub.Stub(repo => repo.GetTemplateProjectQuestions()) > .IgnoreArguments() > .Repeat > .Any() > .Return(TemplateProjectQuestionMock.GetList()); > > > var result = _templateBl.GetTemplateProjects(_callContext) > .OrderBy(x=>x.Id) > .ToList(); > > ..... > > Thus something very simple .. I just build stubs for repository methods > return and I do not take care of parameter at this time (there is only ony > and it is optional).. > On the call the code does not return a non visible value for the first > call, a null for the other and crash on that call with this error : > > An exception of type 'System.InvalidOperationException' occurred in > Rhino.Mocks.dll but was not handled in user code > Additional information: Previous method > 'ITemplateRepository.GetTemplateProjectWorkOrders(null);' requires a return > value or an exception to throw. > > It seems clear .. but it is not, as the static class is returning an List > of 2 objects (tested, again and again) .. And If I switch 2 line, it still > crashing. > On another test with a single call to the repository, it works perfectly > .. If I add one, it crashs. > > Any Idea about what i am doing wrong ? > > Regards, > > Frédéric > > > > > -- > You received this message because you are subscribed to the Google Groups > "Rhino.Mocks" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/rhinomocks. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Rhino.Mocks" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/rhinomocks. For more options, visit https://groups.google.com/d/optout.
