我编写了一个属性,该属性在堆栈在Kestrel服务器上运行时有效。
但是当我尝试为此添加一个测试时,该属性从不提出。
属性:
public class AuthenticatedAttribute : Attribute, IAlwaysRunResultFilter
{
public void OnResultExecuting(ResultExecutingContext context)
{
if (context.HttpContext.User.Identity.IsAuthenticated)
{
context.Result = new RedirectToPageResult("/Index");
}
}
public void OnResultExecuted(ResultExecutedContext context)
{
}
}
测试:
[Fact]
public async Task Get_SignInFromAuthenticated_ShouldRedirectToIndex()
{
var response = await GetPageByPath("/users/sigin");
Assert.NotEqual("/users/sigin", response.RequestMessage.RequestUri.AbsolutePath);
}
测试配置:
_client = CreateClient(new WebApplicationFactoryClientOptions
{
AllowAutoRedirect = false,
});
protected async Task<HttpResponseMessage> GetPageByPath(string path)
{
return await _client.GetAsync(path);
}
这很酷,如果可以测试此功能以了解我的过滤器是否针对包含该过滤器的页面正确重定向。