public void CreateWebRequest() { "给定特殊的WebRequest将会在随后使用".Test(() => { var mock = new Mock <IMockSegmentFileDownloader>(); var url = $"https://blog.lindexi.com"; var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); mock.Setup(downloader => downloader.CreateWebRequest(It.IsAny <string>())).Returns(() => httpWebRequest); mock.Setup(downloader => downloader.OnWebRequestSet(httpWebRequest)) .Returns(() => httpWebRequest); var fakeSegmentFileDownloader = new FakeSegmentFileDownloader(mock.Object, url, new FileInfo("test" + Path.GetRandomFileName())); var task = fakeSegmentFileDownloader.DownloadFileAsync(); Task.WaitAny(task, Task.Delay(TimeSpan.FromSeconds(1))); mock.Verify(downloader => downloader.CreateWebRequest(It.IsAny <string>()), Times.AtLeastOnce); }); "测试进入慢网环境下载,能成功下载文件".Test(() => { var url = $"https://blog.lindexi.com"; var file = new FileInfo(Path.GetTempFileName()); var slowlySegmentFileDownloader = new SlowSegmentFileDownloader(url, file); var task = slowlySegmentFileDownloader.DownloadFileAsync(); Task.WaitAny(task, Task.Delay(TimeSpan.FromSeconds(20))); if (task.IsCompleted) { file.Refresh(); Assert.AreEqual(100, file.Length); } else { // 测试设备太渣 } }); }
public void CreateWebRequest() { "给定特殊的WebRequest将会在随后使用".Test(() => { var mock = new Mock <IMockSegmentFileDownloader>(); var url = $"https://blog.lindexi.com"; var httpWebRequest = (HttpWebRequest)WebRequest.Create(url); mock.Setup(downloader => downloader.CreateWebRequest(It.IsAny <string>())).Returns(() => httpWebRequest); mock.Setup(downloader => downloader.OnWebRequestSet(httpWebRequest)) .Returns(() => httpWebRequest); var fakeSegmentFileDownloader = new FakeSegmentFileDownloader(mock.Object, url, new FileInfo("test" + Path.GetRandomFileName())); var task = fakeSegmentFileDownloader.DownloadFileAsync(); Task.WaitAny(task, Task.Delay(TimeSpan.FromSeconds(1))); mock.Verify(downloader => downloader.CreateWebRequest(It.IsAny <string>()), Times.AtLeastOnce); }); }