2016-07-14 53 views
1

我想知道是否有一种方法可以标记为服务堆,即您只希望为请求执行流畅的验证过滤器,而不是继续运行真实的代码?如何仅执行服务堆请求验证代码

理想情况下,你可以将属性添加到任何要求,像

`ExecuteValidationOnly = true` 

这对于测试非常有用,以及验证表单客户端。

谢谢。

回答

2

有内置ServiceStack没有这样的功能,但你可以很容易地添加短路请求,基于查询字符串请求过滤器,例如:刚刚ValidationFeature后

public class SkipRequestFeature : IPlugin 
{ 
    public void Register(IAppHost appHost) 
    { 
     appHost.GlobalRequestFilters.Add((req, res, dto) => { 
      if (req.QueryString["SkipRequest"] == "true") 
       res.EndRequestWithNoContent(); 
     }); 
    } 
} 

并注册插件,所以它的经过验证,如执行:

Plugins.Add(new ValidationFeature()); 
Plugins.Add(new SkipRequestFeature()); 
+0

完美。谢谢! – richardwhatever

1

对于这种情况,我通常单元测试我的实际AbstractValidator<T>类,然后当我需要测试我创建了验证,并设置验证呼叫模拟服务。

所以有一个MyValidatorTests类和一个MyServiceTests类。