【发布时间】:2015-10-05 16:04:30
【问题描述】:
注意:以下问题仅在控制器测试期间发生。这是精炼的问题How to properly integration test Web Api controller with IEnumerable results?
有什么方法可以避免调用 ToList 方法,但在延迟 LINQ 执行出现异常的情况下仍然返回正确的状态代码,以使控制器尽可能简单?
例如我有这样的 API 端点:
public class EntityController : ApiController
{
...
public IHttpActionResult Get()
{
return Ok(Session.Query<Entity>());
}
}
上面的代码总是会返回成功的状态码,但是使用 ToList 则不会成功,以防执行查询出现任何问题。
public class EntityController : ApiController
{
...
public IHttpActionResult Get()
{
return Ok(Session.Query<Entity>().ToList());
}
}
这样做的原因很清楚,但是有没有更聪明的方法来返回正确的状态代码并保持控制器简单?
【问题讨论】:
-
如果查询有问题,第一个示例将返回
500 - Internal Server Error,异常只会发生在管道中的不同点,很可能是在序列化程序枚举 IEnumerable 时。跨度> -
是的,@AnishPatel,您实际上是对的,我需要完善这个问题。当我尝试针对数据库集成测试此控制器时会出现问题,并且由于某种原因整个管道未执行并且状态代码在任何情况下为 200。
-
请参阅answer 对您重新提出的问题。
标签: c# asp.net linq asp.net-web-api