2016-07-14 16 views
1

Ich frage mich, gibt es eine Möglichkeit, ServiceStack zu kennzeichnen, dass Sie nur den flüssigen Validierungsfilter für eine Anfrage ausführen möchten, und nicht weiter den echten Code ausführen?Nur ServiceStack-Anfrage-Validierungscode ausführen

Im Idealfall könnten Sie eine Eigenschaft auf jede Anfrage hinzufügen, so etwas wie

`ExecuteValidationOnly = true` 

würde für Tests wirklich nützlich das sein, und für Formulare Clientseite Validierung.

Danke.

Antwort

2

Es gibt keine solche Funktion in ServiceStack gebaut, aber man kann leicht eine Anfrage Filter, die Kurzschlüsse der Antrag auf eine Abfrage-Zeichenfolge-Basis hinzufügen, zum Beispiel:

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

und registrieren Sie das Plugin direkt nach dem ValidationFeature so ist es ausgeführt nach der Validierung, zB:

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

perfekt. Vielen Dank! – richardwhatever

1

Für diesen Fall habe ich in der Regel testen Einheit meine eigentliche AbstractValidator<T> Klasse dann, wenn ich den Service, den ich ein Modell auf den Validator und Setup-Validierung Anrufe testen müssen erstellen.

So gibt es eine MyValidatorTests Klasse und eine MyServiceTests Klasse.