Controller.MyMethod()没有启动HttpModule,那么我如何对HttpModule进行单元测试呢?

时间:2015-07-28 14:00:11

标签: unit-testing nunit moq asp.net-web-api2 httpmodule

如何对Web Api 2 HttpModule进行单元测试?该模块检查特定的HTTP标头。

我尝试了以下代码,但它并没有启动HttpModule。

var logger = new Mock<ILogger>();
var controller = new FeaturesV1Controller(logger.Object);
var controllerContext = new HttpControllerContext();
var request = new HttpRequestMessage();
request.Headers.Add("X-My-Header", "success");
controllerContext.Request = request;
controller.ControllerContext = controllerContext;

// Act
var result = controller.Get(11);

我已经验证了真正的来电,HttpModule会被调用。

1 个答案:

答案 0 :(得分:0)

您可以找到有关如何对HttpModule here进行单元测试的信息。

替代方法可能是不测试模块本身,而是将要测试的代码移出到另一个类。通过在请求中注入内容而不是测试代码,您正在测试框架。除非你想要测试,否则我建议你从HttpModule中移出代码。