public async Task UploadBatchDelegatesToPublishingEndPoint() { Mock <IFormFile> file = new Mock <IFormFile>(); byte[] contents = { 3, 63, 8, 100 }; MemoryStream ms = new MemoryStream(); StreamWriter writer = new StreamWriter(ms); writer.Write(File.Create("blah blah")); await writer.FlushAsync(); ms.Position = 0; file.Setup(_ => _.CopyToAsync(It.IsAny <Stream>(), It.IsAny <CancellationToken>())) .Returns((Stream stream, CancellationToken token) => ms.CopyToAsync(stream)) .Verifiable(); file.SetupGet(x => x.Length).Returns(contents.Length); BatchUploadResponse expectedResponse = new BatchUploadResponse { BatchId = Guid.NewGuid().ToString(), Url = "http:whatever" }; _publishingApiClient .UploadBatch(Arg.Any <BatchUploadRequest>()) .Returns(new ApiResponse <BatchUploadResponse>(HttpStatusCode.OK, expectedResponse)); OkObjectResult result = await _publishController.UploadBatch(file.Object) as OkObjectResult; result.Should().NotBeNull(); result? .Value .Should() .BeSameAs(expectedResponse); }