我目前的项目基于Asp .net大量使用Http处理程序来处理各种请求?那么,有什么方法可以用单元测试用例来测试每个处理程序的功能?我们使用Nunit和Moq框架来促进单元测试。单元测试http处理程序?
回答
你当然可以,虽然我没有在“愤怒”中做过自己。
使用System.Net.WebClient对您的处理程序进行HTTP调用,并评估返回的内容,这将允许您测试处理程序的面向公共的界面。
在这个例子中,我对我的目标进行了硬编码,并且我在WebClient上使用了一个返回字符串的方法。
WebClient还为您提供了对ResponseHeaders,Encoding和其他有用'webby'内容的访问;你也可以上传信息。
using System.Net;
namespace UnitTestHttpHandler
{
public class TestHarness
{
public static string GetString()
{
WebClient myWebClient = new WebClient();
return myWebClient.DownloadString("http://localhost/Morphfolia.Web/ContentList.ashx");
}
}
}
然后,您可以使用TestHarness调用目标的HttpHandler,并在您的测试验证结果(或使用更好的方法来你的测试,如果你知道一个 - 我不是一个单元测试大师)。
[TestMethod]
public void TestMethod1()
{
string x = UnitTestHttpHandler.TestHarness.GetString();
Assert.IsTrue(x.Length > 5);
}
这是一篇文章,清楚地解释了http处理程序的单元测试。
http://jgvimalan.wordpress.com/2011/08/30/unit-test-for-http-handler/
你可以使用在其他的答案中提到的方法,做单元测试,你将需要创建一些接口,并提取核心功能出了处理程序,以及处理程序的集成测试创建一些模拟对象。
你将无法单元测试它的所有部分,因为它依赖于外部资源(那些你会嘲笑的) - 但这很好,这就是为什么我们有集成测试。
我想从一个虽然这些博客文章背后,是相关的:
http://www.kongsli.net/nblog/2009/05/03/aspnet-35-improving-testability-with-systemwebabstractions/
见例如#2在第一篇文章为例如何单元测试一个HttpHandler。
如果您想测试处理程序和Web UI之间的通信,那么是的,集成测试是实现这一目标的方法。为了单元测试你的逻辑,你能不把你的业务逻辑分成其他类(我会为业务层使用一个单独的程序集),并且模拟/单元测试这些类,而不是在表示层之外?
一旦你有一个已经与表示层分离的结构化(和单元测试)业务层,你的处理程序可以简单地实例化你的concretes并调用提供的方法。一旦完成,您就可以进行集成测试,因为您的业务逻辑将经过单元测试。
如果你不关心单元测试和想要的东西快速和肮脏的,你可以使用Fiddler
如果你想要一个更加综合的方法(单元测试),您可以使用WebRequest和WebResponse。
- 1. Netty SSL处理程序单元测试
- 2. 单元测试golang处理程序
- 3. 单元测试事件处理程序
- 4. 重置golang中的http处理程序进行单元测试
- 5. HTTP POST要自测试处理程序
- 6. 调试HTTP处理程序
- 7. 如何在ViewModel中单元测试OnPropertyChanged事件处理程序
- 8. 单元测试事件处理程序的代码
- 9. 正确处理单元测试“复杂”应用程序服务
- 10. 我应该单元测试事件处理程序
- 11. 单元测试与茉莉花敲除绑定处理程序
- 12. 如何单元测试os.walk触发错误处理程序?
- 13. c#单元测试委托事件处理程序
- 14. 单元测试SharePoint中的事件处理程序?
- 15. IE中的单元测试事件处理程序
- 16. 在C#单元测试中实现未处理的异常处理程序
- 17. 单元测试NServiceBus处理程序处理对其发送的回复
- 18. 单元测试的IOError异常处理
- 19. JUnit如何处理单元测试?
- 20. 单元测试在事件处理
- 21. 单元测试组件不足处理
- 22. Python:在单元测试中处理sys.exit?
- 23. MSTest单元测试 - 处理异常
- 24. 信号处理单元测试?
- 25. 在单元测试中处理HttpResponse
- 26. 在Silverlight单元测试中处理DependencyObjects
- 27. 单元测试异常处理
- 28. .Net单元测试EnterpriseLibrary.Exception处理问题
- 29. 从Visual Studio调试HTTP处理程序
- 30. 如何在角度测试http错误处理程序?
但是我们需要将请求路由(使用配置文件)到正确的处理程序,服务器也需要运行,对吧?那么如何模拟呢? – 2010-05-18 04:59:09
是的,一个Web服务器将需要运行。就配置而言,我不能说经验,但我会认为它将以类似的方式通过单元测试(?)通过配置指定其他设置。对不起,我不能提供比这更多的东西。 – 2010-05-25 09:08:44
这实际上工作得很好,唯一的问题是你无法通过你的目标处理程序进行调试。 – Brent 2015-01-16 13:58:15