2016-04-03 7 views
1

zu testen Ich möchte meine ValidationFeature Rulesätze in meinem ServiceStack Projekt Einheit testen, aber das Plugin wird nicht initialisiert, wenn ich mein appHost Objekt erstelle.Ist es möglich, Test ValidationFeature Plugin in ServiceStack

Hier ist mein ursprünglicher Code zur Initialisierung der appHost.

[TestFixtureSetUp] 
    private void TestFixtureSetUp() 
    { 
     appHost = new BasicAppHost().Init(); 
     appHost.Plugins.Add(new ValidationFeature()); 
     var container = appHost.Container; 
     container.RegisterValidators(typeof(ApplicationValidator).Assembly); 
     container.RegisterAutoWiredAs<FakeRetailReferralRepository, IRetailReferralRepository>(); 
     container.RegisterAutoWired<SubmitApplicationService>();    
    } 

Ich habe versucht, zwischen dem BasicAppHost Konstruktor die Plugins.Add Linie bewegt und Init() und dass auch nicht funktioniert. Ist das, was ich versuche, möglich?

+1

Mögliche Duplikat [Testen von Plugins in ServiceStack] (http://stackoverflow.com/questions/11710434/testing-plugins-in-servicestack) –

Antwort

2

Die Validierungsfunktion wird innerhalb der Anforderungspipeline validiert, so dass typischerweise ein vollständiger Integrationstest zum Testen erforderlich ist, d. H. Unter Verwendung eines Self-Host- und Service-Clients.

Sie können immer noch testen Einheit einen Validator, aber die Validierung erfolgt, bevor der Dienst aufgerufen wird, würden Sie den Validator mit dem Antrag DTO, sondern direkt den Service aufzurufen, zB testen müssen:

using (var appHost = new BasicAppHost 
{ 
    ConfigureAppHost = host => { 
     host.Plugins.Add(new ValidationFeature()); 
    }, 
    ConfigureContainer = c => { 
     c.RegisterValidators(typeof(ApplicationValidator).Assembly); 
    } 
}.Init()) 
{ 
    var myValidator = appHost.TryResolve<IValidator<MyRequest>>(); 

    var result = myValidator.Validate(new MyRequest { ... }); 
    Assert.That(result.IsValid, Is.False); 
    Assert.That(result.Errors.Count, Is.EqualTo(1)); 
}