[英]Integration test Asp.Net Core attribute parameter modification
我有一个具有自定义属性的终结点方法,例如:
[Route ("/version")]
[CacheFilter (hours: 12)]
public async Task<ActionResult<string>> Version ()
{ ... }
我的缓存过滤器在其构造函数中设置了指定的缓存时间:
public CacheFilterAttribute (int days = 0, int hours = 0, int minutes = 0, int seconds = 0) : base (typeof (CacheFilter))
{
this.days = days;
this.hours = hours;
this.minutes ...
}
我想知道当我测试该端点时是否有可能将该时间更改为(例如)10秒。
我在单元测试中以这种方式调用该端点方法:
await RADBServer.Client.GetAsync ("/version");
提前谢谢
可以办到。 对于集成测试,使用测试服务器只需将全局过滤器添加到您的MVC中,就需要实现IActionFilter。 然后,在.OnActionExecuting方法上,您可以访问特定的方法属性以更改其公共属性(如在属性构造函数上传递的值)。 您的方法过滤器将在具有新属性值的全局过滤器之后调用。
ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.Filters.Add(typefof(TestFilter))...
{ public class TestFilter : IActionFilter { public void OnActionExecuting(ActionExecutingContext context) { // obtain the method attributes and change values }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.