public void MovingFundsUsingTransactions_AAA() { //Arrange MockRepository mocks = new MockRepository(); IDatabaseManager databaseManager = mocks.StrictMock <IDatabaseManager>(); IBankAccount accountOne = mocks.StrictMock <IBankAccount>(), accountTwo = mocks.StrictMock <IBankAccount>(); using (mocks.Ordered()) { databaseManager.Expect(d => d.BeginTransaction()).Return(databaseManager); using (mocks.Unordered()) { accountOne.Expect(a => a.Withdraw(1000)); accountTwo.Expect(a => a.Deposit(1000)); } databaseManager.Dispose(); } //Act mocks.ReplayAll(); Bank bank = new Bank(databaseManager); bank.TransferFunds(accountOne, accountTwo, 1000); //Assert databaseManager.VerifyAllExpectations(); accountOne.VerifyAllExpectations(); accountTwo.VerifyAllExpectations(); }