public void S3Service_AmazonClient_IsPassed_Correct_Request() { // Arrange var mockAmazonClient = Substitute.For <IAmazonS3>(); var s3Service = new S3Service(mockAmazonClient); mockAmazonClient.GetObjectAsync(Arg.Any <GetObjectRequest>()).Returns(new GetObjectResponse()); var expectedRequest = new GetObjectRequest { BucketName = "webapp-images-bucket", Key = "DenverCP.jpg" }; // Act // only testing what's passed to the client and not making actual request // so doesn't need to be awaited s3Service.GetImageFromS3(_configuration, "DenverImage"); // Assert mockAmazonClient .Received(1) .GetObjectAsync(Arg.Is <GetObjectRequest>(request => RequestDataPropertiesMatch(request, expectedRequest))); }