Ray*_*awn 2 c# unit-testing http
我创建了一个程序来调用数千个URL,我想要做的是确保如果url超时我可以将超时错误追溯到url.我所拥有的是:
string url = "http://www.google.com";
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(url);
request.Timeout = 5000;
request.ReadWriteTimeout = 5000;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1";
//From Fiddler
DateTime giveUp = DateTime.UtcNow.AddSeconds(5);
if (DateTime.UtcNow > giveUp)
throw new TimeoutException("The following url could not be reached: " + url);
Run Code Online (Sandbox Code Playgroud)
我想创建一个单元来测试超时异常是否正常工作.如果您需要更多细节,请告诉我,但这应该足够了.
问题就变成了你真正在测试的东西.你可以很容易地在你的测试中启动一个小的HTTP服务器并向它发送一个请求,知道它会超时 - 这会测试你的超时代码.但是,你真的在测试是否HttpWebRequest正确超时.您并不关心它是否正确超时,只是它确实超时,并且您希望确保代码处理TimeoutException异常.
在这种情况下通常做的是使用一个基本上只抛出a的测试double(mock)TimeoutException.
| 归档时间: |
|
| 查看次数: |
5160 次 |
| 最近记录: |