gpt4 book ai didi

asp.net-mvc - 如何在 ASP.NET MVC 中测试操作过滤器?

转载 作者:行者123 更新时间:2023-11-28 19:40:54 25 4
gpt4 key购买 nike

为此需要一些指示。找到thisthis ,但我仍然有点困惑。

我只想模拟 ActionExecutedContext,传递它,让过滤器稍微工作一下并检查结果。

有什么帮助吗?

您可以找到过滤器的来源here
(它发生了一些变化,但目前不是重点)。

所以 - 我想要单元测试,RememberUrl 过滤器足够智能,可以在 session 中保存当前 URL。

最佳答案

1) 在 ActionExecutedContext 中模拟 Request.Url:

var request = new Mock<HttpRequestBase>();
request.SetupGet(r => r.HttpMethod).Returns("GET");
request.SetupGet(r => r.Url).Returns(new Uri("http://somesite/action"));

var httpContext = new Mock<HttpContextBase>();
httpContext.SetupGet(c => c.Request).Returns(request.Object);

var actionExecutedContext = new Mock<ActionExecutedContext>();
actionExecutedContext.SetupGet(c => c.HttpContext).Returns(httpContext.Object);

2) 假设您在 RememberUrlAttribute 的公共(public)构造函数中注入(inject) session 包装器。

var rememberUrl = new RememberUrlAttribute(yourSessionWrapper);

rememberUrl.OnActionExecuted(actionExecutedContext.Object);

// Then check what is in your SessionWrapper

关于asp.net-mvc - 如何在 ASP.NET MVC 中测试操作过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1057776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com