Car*_*mas 3 c# unit-testing asp.net-core-mvc .net-core
我正在使用.net core创建API。我的方法之一是插入新记录的POST。成功的响应返回201 Created。在.net中,我可以使用助手CreatedResult例如
return Created(new Uri(Url.Link("get_method", new { id = record.id })), record);
Run Code Online (Sandbox Code Playgroud)
这将返回带有正确的Location标头设置的201响应。Location标头使用传入的请求使用主机名来构建URL。
在.net webapi2中进行单元测试时,我可以创建一个自定义HttpRequestMessage并自行设置主机名。现在,这似乎已在新的.net核心框架中消失了。
如何模拟传入的请求,以便可以进行单元测试并创建有效的Location标头。
我相信我需要在控制器的HttpContext上模拟HttpRequest。
UserController controller = new UserController();
controller.ControllerContext.HttpContext.Request = ?
Run Code Online (Sandbox Code Playgroud)
如何模拟此Request参数?这是一个只读属性。
在@Nkosi之后,我发现我需要模拟IUrlHelper
Mock<IUrlHelper> urlHelper = new Mock<IUrlHelper>();
urlHelper.Setup(x => x.Link(It.IsAny<string>(), It.IsAny<object>())).Returns("http://localhost");
UserController controller = new UserController();
controller.Url = urlHelper.Object
Run Code Online (Sandbox Code Playgroud)
现在,当在控制器内部调用Url.Link时,它将返回我的https:// localhost
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |