public async void Withdraw_Valid_Amount() { WithdrawMessage command = new WithdrawMessage() { AccountId = Guid.NewGuid(), Amount = 600 }; Account account = Substitute.For <Account>(); account.Deposit(Credit.Create(Amount.Create(1000))); accountReadOnlyRepository .Get(command.AccountId) .Returns(account); Withdraw sut = new Withdraw( accountReadOnlyRepository, accountWriteOnlyRepository); Debit debit = await sut.Handle(command); Assert.Equal(command.Amount, debit.Amount.Value); Assert.Equal("Debit", debit.Description); Assert.True(debit.Id != Guid.Empty); }