web api 2验证控制器正在生产环境中运行

时间:2015-10-08 08:50:46

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

我是C#web api 2的新手,并为内部使用创建了一个Web服务。我在我的开发和测试环境的CI管道中设置了烟雾和验收测试,这些在我们的数据库中插入虚假数据,并验证各种输出,错误消息等。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

或者,如果你主要关心的只是控制器而你在测试环境中没有足够的信心来调用它们,那么可能会为每个控制器添加一条诊断路径并调用它。例如。 “controller1 / test”返回200 / OK以显示controller1已配置。