[英]ASP.NET Core 3: response 404 during integration test produced by RedirectResult(“MyList”)
我有两个页面/MyArea/Pages/Create.cshtml
和/MyArea/Pages/MyList.cshtml
。 所以我创建了一个实体并用return RedirectResult("MyList")
完成它。
这适用于浏览器。
但是在集成测试期间(使用Microsoft.AspNetCore.Mvc.Testing
package 版本 3.0),当我打开/MyArea/Create
页面并发布表单时:
var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
这一切都回来了
{StatusCode:404,ReasonPhrase:'未找到',版本:1.1,内容:System.Net.Http.StreamContent,标题:{内容长度:0}}
创建实体并调用return RedirectResult("MyList")
报告的请求消息: {Method: GET, RequestUri: 'http://localhost/MyList', Version: 1.1, Content: <null>, Headers: { Cookie: .AspNetCore.Antiforgery.... Cookie: .AspNetCore.Antiforgery....}}
我看到请求的消息不正确:RequestUri 应该包含一个区域 //localhost/ MyArea /MyList,
我应该在集成测试代码中添加什么样的“当前位置管理”来强制 httpClient“尊重”该区域?
PS 我可以这样写,在服务器端return RedirectResult("/MyArea/MyList")
但现在我想知道如何在集成测试中重复浏览器的行为?
到目前为止,我发现的一个选项是设置clientOptions.AllowAutoRedirect=false
,然后手动处理重定向。 奇怪的是 HttpClient 在自动重定向期间不“尊重”当前位置。 这似乎是HttpClient
的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.