【问题标题】:web api 2 verify controller is running on production environmentweb api 2 验证控制器是否在生产环境中运行
【发布时间】:2015-10-08 08:50:46
【问题描述】:

我对@9​​87654321@ 和web api 2 还很陌生,并为一些内部使用创建了一个Web 服务。我在我的 CI 管道中为我们的开发和测试环境设置了冒烟测试和验收测试,这些测试在我们的数据库中插入虚假数据,并验证各种输出、错误消息等。

问题来了;当我们部署新版本时,在我们的生产环境中进行验收/配置测试。

理想情况下,我想要一个简单的配置测试/报告,告诉我controllers 已正确实例化,并且在正确的路径上。

web api 2 有没有办法实现这一点?如果不是,您会建议在生产环境中测试controllers 的可用性,而不污染数据库(对于POST request)并且有已知数据进行测试。

【问题讨论】:

    标签: c# testing asp.net-web-api acceptance-testing


    【解决方案1】:

    我可能会创建一个带有 GET 的 /test 端点,它会返回应用程序的状态,无论您需要什么。例如它是否可以执行 sql(即使没有数据),它可以使用 UrlHelper 生成指向所有已知端点的链接(您可能必须使用反射或自定义属性,或者只提供控制器/操作列表来验证)和显示它们。

    您可以创建一个自定义过滤器属性,该属性将验证请求中是否提供了特定数据(如自定义标头)而不实际运行操作(通过设置响应),但返回信息将执行什么操作(使用东西比如controllerContext、actionContext或其他)。然后您可以手动或使用一些自动化(甚至在 /test 端点内!)使用该标头进行调用并检查 URL 是否对应于正确的操作。

    【讨论】:

      【解决方案2】:

      除了执行 HTTP 请求之外,我不知道有任何方法可以检查生产中运行的控制器。

      如果是我,我会通过某种方式将请求标识为“仅测试”(可能是自定义 HTTP 请求标头,或者通过在输入中查找特殊值)。作为这些请求的一部分写入数据库的任何数据都将被标记为“仅测试”,以使其与“真实”生产数据区分开来。

      或者,如果您主要关心的只是控制器,并且您在测试环境中调用它们时没有足够的信心,那么可以为每个控制器添加一个诊断路由并调用它。例如。 “controller1/test”返回 200/OK 表明 controller1 已配置。

      【讨论】:

        猜你喜欢
        • 2013-02-15
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 2017-05-27
        • 1970-01-01
        • 2019-11-10
        • 2021-05-22
        • 2012-12-26
        相关资源
        最近更新 更多