繁体   English   中英

集成测试Asp.Net Core属性参数修改

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM