Esempio n. 1
0
        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);
            });
        }