2016-04-03 15 views
1

'da birim test ValidationFeature eklentisi mümkün mü appHost nesnesini oluştururken eklenti ServiceStack projemde ValidationFeature kural kümeleri test etmek istiyorum.ServiceStack

İşte orijinal kodum appHost'u başlatıyor.

[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>();    
    } 

Ben BasicAppHost yapıcı ve Init() ve bu da işe yaramadı arasında Plugins.Add çizgisinde hareketli denedim. Yapmaya çalıştığım şey mi?

+1

Olası yinelenen [ServiceStack'ta test eklentileri] (http://stackoverflow.com/questions/11710434/testing-plugins-in-servicestack) –

cevap

2

Doğrulama özelliği, İstek Pipeline içinde doğrulanır, bu nedenle tipik olarak test etmek için bir tam entegrasyon testi gerektirir, yani bir self-host ve servis istemcisi kullanarak.

Hala birimi doğrulayıcı test edebilirsiniz, ancak doğrulama oluşur olarak hizmet çağrılmadan önce sen mesela Servisi, çağıran yerine doğrudan Request DTO ile doğrulayıcı test etmek gerekir: bir

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)); 
} 
İlgili konular