title: Rhino.Mocks.Exceptions.ExpectationViolationException : Expected #1, Actual #2
body: <p>I have two tests. First test work correctly. Second test looks like as first test. However, I get exception, when I run the second test.</p>
  
  <p>The first test:</p>
  
  <pre><code>public void GetCurrentBalance_Should_getting_rigth_balanse()
  {
      // Arrange
      double balance = 10;
  
      var mocks = new MockRepository();
      IUnitOfWork unitOfWork = mocks.Stub&lt;IUnitOfWork&gt;();
      unitOfWork.Stub(svc =&gt; svc.AccountRepository.Get()).Return(new List&lt;Account&gt; {new Account { Balance = balance }}); 
  
      AccountService accountService = new AccountService(unitOfWork); 
  
      // Act
      mocks.ReplayAll();
      var result = accountService.GetCurrentBalance();
  
      //Assert
      Assert.AreEqual(balance, result);
  }
  </code></pre>
  
  <p>The second test:</p>
  
  <pre><code>public void WithdrawMoney_Balance_should_decrease_when_money_been_withdrawn()
  {
      // Arrange
      double balance = 10;
  
      var mocks = new MockRepository();
      IUnitOfWork unitOfWork = mocks.Stub&lt;IUnitOfWork&gt;();
      unitOfWork.Stub(svc =&gt; svc.AccountRepository.Get()).Return(new List&lt;Account&gt; { new Account { Balance = balance } });
  
      AccountService accountService = new AccountService(unitOfWork);
  
      // Act
      mocks.ReplayAll();
      var result = accountService.WithdrawMoney(1); // this line is different
  
      //Assert
      Assert.AreEqual(balance - 1, result);
  }
  </code></pre>
  
  <p>Part of my service:</p>
  
  <pre><code>public class AccountService : BaseService, IAccountService
  {
      public AccountService(IUnitOfWork unitOfWork)
          : base(unitOfWork)
      {
      }
  
      public double WithdrawMoney(double amountOfMoney)
      {
          var currentBalance = GetCurrentBalance();
  
          if (currentBalance &lt; amountOfMoney)
          {
              throw new BusinessLayerException("error!");
          }
  
          var lastAccount = GetLastAccount();
  
          if (lastAccount == null)
          {
              throw new BusinessLayerException("error!");
          }
  
          lastAccount.Balance -= amountOfMoney;
  
          unitOfWork.AccountRepository.Update(lastAccount);
          unitOfWork.Save();
  
          return lastAccount.Balance;
      }
  
      public double GetCurrentBalance()
      {
          var lastAccount = GetLastAccount();
  
          if (lastAccount == null)
          {
              return 0;
          }
  
          return lastAccount.Balance;
      }
  
      private Account GetLastAccount()
      {
          var lastAccount = unitOfWork.AccountRepository.Get().FirstOrDefault();
  
          return lastAccount;
      }
  }
  </code></pre>
  
  <p>I get the following call stack:</p>
  
  <pre><code>Rhino.Mocks.Exceptions.ExpectationViolationException : IUnitOfWork.get_AccountRepository(); Expected #1, Actual #2.
     at Rhino.Mocks.MethodRecorders.UnorderedMethodRecorder.DoGetRecordedExpectation(IInvocation invocation, Object proxy, MethodInfo method, Object[] args)
     at Rhino.Mocks.MethodRecorders.MethodRecorderBase.GetRecordedExpectation(IInvocation invocation, Object proxy, MethodInfo method, Object[] args)
     at Rhino.Mocks.Impl.ReplayMockState.DoMethodCall(IInvocation invocation, MethodInfo method, Object[] args)
     at Rhino.Mocks.Impl.ReplayMockState.MethodCall(IInvocation invocation, MethodInfo method, Object[] args)
     at Rhino.Mocks.MockRepository.MethodCall(IInvocation invocation, Object proxy, MethodInfo method, Object[] args)
     at Rhino.Mocks.Impl.Invocation.Actions.RegularInvocation.PerformAgainst(IInvocation invocation)
     at Rhino.Mocks.Impl.RhinoInterceptor.Intercept(IInvocation invocation)
     at Castle.DynamicProxy.AbstractInvocation.Proceed()
     at Castle.Proxies.IUnitOfWorkProxy2936ffa6dea844258ad88f7a7e99dbc0.IUnitOfWork.get_AccountRepository()
     at Service.AccountService.GetLastAccount() in AccountService.cs: line 90
     at Service.AccountService.WithdrawMoney(Double amountOfMoney) in AccountService.cs: line 61
     at ServiceTest.AccountServiceTest.WithdrawMoney_Balance_should_decrease_when_money_been_withdrawn() in AccountServiceTest.cs: line 48
  </code></pre>