[英]C# - Unit testing a WebApi controller
我习惯于在Java中测试Web控制器,即使在单元测试中,也向该控制器发送了真正的请求。
关于C#,我在这里或这里看到的文档似乎是检查控制器方法的调用工作流,而不是整个HTTP消息工作流。
特别是说我有以下控制器:
public class SessionController : ApiController
{
[HttpDelete]
[ResponseType(typeof(IHttpActionResult))]
[Route("api/v1/sessions/{session-id}")]
[ActionName("stop_session")]
[ValidateModel]
public IHttpActionResult StopSession([FromUri(Name = "session-id")] Guid sessionId)
{
Console.WriteLine($"Stopping session {sessionId}");
SessionRepository.Instance.Remove(sessionId);
return Ok();
}
}
如果我创建以下单元测试:
[TestMethod]
public void TestStopSession()
{
SessionController controller = new SessionController()
{
Request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("http://localhost:9000/api/v1/zada")
}
};
controller.Configuration = new HttpConfiguration();
var res = controller.StopSession(new Guid());
Assert.IsInstanceOfType(res, typeof(OkResult));
}
如您所见,在测试中,我放置了一个不同的URL甚至一个不同的方法,但是单元测试仍然成功通过了。
对整个HTTP工作流程进行单元测试的方法是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.