作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 .net 核心创建 API。我的方法之一是插入新记录的 POST。成功的响应返回 201 Created。在 .net 中,我可以使用助手 CreatedResult,例如
return Created(new Uri(Url.Link("get_method", new { id = record.id })), record);
这将返回带有正确 Location header 集的 201 响应。 Location header 使用传入请求使用主机名构建 url。
在 .net webapi2 中进行单元测试时,我可以创建自定义 HttpRequestMessage 并自己设置主机名。现在这似乎已经在新的 .net 核心框架中消失了。
如何模拟传入请求,以便进行单元测试并创建有效的 Location header 。
我认为我需要在 Controller 的 HttpContext 上模拟 HttpRequest。
UserController controller = new UserController();
controller.ControllerContext.HttpContext.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
现在,当在 Controller 内部调用 Url.Link 时,它会返回我的 https://localhost
关于c# - .net 核心中的单元测试 Url.Link,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42194124/
我是一名优秀的程序员,十分优秀!