【问题标题】:Controller.MyMethod() doesn't kick off HttpModule, so how can I unit test an HttpModule?Controller.MyMethod() 不会启动 HttpModule,那么如何对 HttpModule 进行单元测试?
【发布时间】:2015-10-19 03:22:32
【问题描述】:

如何对 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 确实被调用了。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 我为这个问题提供了两个答案:一个链接和一个简单地将代码移动到另一个类的替代方法。这些问题是他应该问自己的问题,我没想到会有更多信息能够提供答案。将更新问题以澄清。
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2014-05-21
    • 1970-01-01
    相关资源
    最近更新 更多