[英]How to Unit Test HTTP Handlers in C#
我想对我的 HTTP 处理程序进行单元测试。 我正在使用 XUnit 框架进行单元测试,我的示例处理程序代码是
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
var data = context.Request.InputStream;
//Here logic read the context.Request.InputStream
//All the data will be posted to this Stream
//Calling of business logic layer Methods
}
public bool IsReusable
{
get
{
return false;
}
}
}
我是单元测试的新手,我只想知道测试我的 HandleS 的可能测试用例是什么,因为处理程序的返回类型是 Void,所以我很困惑如何编写处理程序测试...
注意:我知道可以使用 HttpContextWrapper 调用 HttpContextBase,我不是在问这个,我只是在问 HttpHandlers 的可能测试用例是什么
测试 void 方法是一个有趣的话题。 我要做的主要方法是模拟一个 HTTP 上下文,并将其作为参数传递。 然后,您应该断言您正在设置 HTTP 上下文以在您的方法中执行的操作。 例如Assert.Equal("text/plain", myHttpContext.Response.ContentType);
但是,您需要确保您正在创建单元测试。 它说你在这一步之后有业务逻辑。 你有没有反转你的依赖关系? (将它们作为参数传递给方法)。 你能恰当地模拟事情吗? 确保该方法没有执行实际的 HTTP 调用(如果它是单元测试)。 一般而言,我建议减少具有副作用的 void 方法,但在传统中它无法避免。 为了解决您最初的问题,测试用例将是您逻辑上期望的任何内容。 我是否正确设置了路线? 我希望内容是文本吗? 我的有效载荷准确吗? 您更改的任何内容都是潜在的测试,但请确保您正在按照验收标准进行测试。 如果测试中只有一个逻辑断言,则可以在测试中使用多个断言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.