public async Task TransferAsync_WithCorrectAmount_ReturnTransactionsResult() { var transferRequest = new TransferRequest { FromAccountIban = "AAAA", ToAccountIban = "BBBB", Amount = 1000 }; var fromAccount = new Account { AccountId = Guid.NewGuid(), AccountIban = "AAAA", Balance = 2000, }; var toAccount = new Account { AccountId = Guid.NewGuid(), AccountIban = "BBBB", Balance = 500, }; accountRepository.GetByAccountIbanAsync(transferRequest.FromAccountIban).Returns(Task.FromResult(fromAccount)); accountRepository.GetByAccountIbanAsync(transferRequest.ToAccountIban).Returns(Task.FromResult(toAccount)); accountRepository.UpdateAccountAsync(fromAccount).Returns(Task.FromResult(new Account())); accountRepository.UpdateAccountAsync(toAccount).Returns(Task.FromResult(new Account())); transferRepository.AddTransferAsync(Arg.Any <Transfer>()).Returns(Task.FromResult(new Transfer())); // Act var transactionsResult = await transactionsService.TransferAsync(transferRequest); // Assert Assert.True(transactionsResult.Success); Assert.Equal(1000, transactionsResult.Balance); }