title: Can I have real Mock using Rhino Mocks 3.6 without defining fake values?
body: <p>I am using Rhino Mocks 3.6. I have seen many types of coding. Sometimes using static <code>GenerateMock</code> method, sometimes using <code>new MockRepository()</code>. I don't understand pretty well what is happening or what is better. Maybe some methods are obsolete, but anyway, let's go to the real issue.</p>
  
  <p>I would like to understand better what is happening in the code below and what is really needed to have a better test.</p>
  
  <pre><code>    [TestMethod]
      public void TestingProperty()
      {
          Person repository = MockRepository.GenerateMock&lt;Person&gt;();
          // tell rhino.mocks when FirstName is called in the next time, it should return "Monica"
          repository.Expect(x =&gt; x.Title).Return("Monica");
          // get the mocking ready
          repository.Replay();
  
          repository.VerifyAllExpectations();
  
          // when getting repository.Title value, we should receive "Monica" defined previously in expectation
          Assert.AreEqual(repository.Title, "Monica");
      }
  </code></pre>
  
  <p>I noticed when I remove <code>repository.Replay()</code>, everything keeps on working. What is the purpose of Replay, is it needed?</p>
  
  <p>VerifyAllExpectations is also needed? What is it doing internally?</p>
  
  <p>Can I avoid typing manually "Monica" and have a real mock object for Person?</p>
  
  <p>If this is a bad code please let me know your suggestions!</p>