public async Task CanReportIssue() { traceAccess.When(x => x.ClearMemBufferAndGetCurrentContents(Arg.Any <TextWriter>())).Do(call => { var w = call.Arg <TextWriter>(); w.Write("line 1\n"); w.Write("line 2\n"); }); using (var uploadedStreamContents = new MemoryStream()) { uploader.UploadIssueReport(Arg.Do <Stream>(s => { IOUtils.CopyStreamWithProgress(s, uploadedStreamContents, _ => { }, CancellationToken.None); }), Arg.Any <CancellationToken>()).ReturnsForAnyArgs(Task.FromResult("https://blobs/123")); await collector.ReportIssue("something went wrong for me"); uploadedStreamContents.Position = 0; using (var zip = new ZipFile(uploadedStreamContents)) { Assert.AreEqual(30, zip.GetEntry("description.txt").Size); Assert.AreEqual(17, zip.GetEntry("membuffer.log").Size); } } }