Search code examples
mockingrhino-mocks

Rhino Mocks: Mocked method returns null


I'm trying to mock a data repository object but after setting an expectation on my MockRepository, it returns null every time. My code is as follows:

    [Test]
    public void GetById_NotNull()
    {
        Person expectedPerson = new Person() { Id = 1, Name="Jon"};

        MockRepository MockRepository = new MockRepository();
        var FakePersonRepository = MockRepository.StrictMock<IRepository<Person>>();

        FakePersonRepository.Expect(action => action.Get(1)).IgnoreArguments().Return(expectedPerson);

        PersonService PersonService = new PersonService(FakePersonRepository);
        Person returnedPerson = PersonService.Get(1);

        Assert.IsNotNull(returnedPerson);
    }

    //and inside my person service
    public class PersonService
    {
         private IRepository<Person> _PersonRepository;
         public PersonService(IRepository<Person> PersonRepository)
         {
           this._PersonRepository = PersonRepository;
         }

         public Person Get(int Id)
         {
             Person p = _PersonRepository.Get(Id);
             return p;
          }
    }

The assertion at the bottom of the Test fails and returned person is always null. I know I must be doing something wrong with my mock....ideas?


Solution

  • Chris is on the money here. The AAA syntax and using GenerateStub for this senario is best.

    var FakePersonRepository = MockRepository.GenerateStub<<IRepository<Person>>();
    FakePersonRepository.Stub(x => x.Get(1)).Returns(expectedPerson);
    
    PersonService PersonService = new PersonService(FakePersonRepository);
    Person returnedPerson = PersonService.Get(1);