2016-07-14 51 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類。