public async Task WhenCalledAsTestUser_ItShouldCreateAPayment() { this.apiKeyRepository.Setup(v => v.GetApiKey(UserType.TestUser)).Returns(ApiKey); var expectedInput = new CreatePaymentIn { Amount = TaxamoTransactionResult.TotalAmount.ToMajorDenomination(), PaymentTimestamp = CommitTaxamoTransaction.ToTaxamoDateTimeString(StripeTransactionResult.Timestamp), PaymentInformation = string.Format( "Reference: {0}, StripeChargeId: {1}", StripeTransactionResult.TransactionReference.Value, StripeTransactionResult.StripeChargeId), }; CreatePaymentIn actualInput = null; this.taxamoService.Setup(v => v.CreatePaymentAsync(TaxamoTransactionResult.Key, It.IsAny <CreatePaymentIn>(), ApiKey)) .Callback <string, CreatePaymentIn, string>((a, b, c) => actualInput = b) .ReturnsAsync(new CreatePaymentOut()); await this.target.ExecuteAsync(TaxamoTransactionResult, StripeTransactionResult, UserType.TestUser); Assert.AreEqual( JsonConvert.SerializeObject(expectedInput, Formatting.None), JsonConvert.SerializeObject(actualInput, Formatting.None)); }