2012-01-06 21 views
7

Haritadaki değişiklikleri doğrulayın rüzgar gölünden. ASP MVC2 kullanıyorum. Depolarımı eşlemek için kale windsorunu kullanıyorum.Test nhibernate Castle httpModules içinde Windsor haritaları kaydedilmedi

ben bu yazıyı okudum:

http://weblogs.asp.net/bsimser/archive/2008/06/04/the-first-spec-you-should-write-when-using-castle.aspx

ve dayalı bu i target.getcontainer() benim MS Testi

[TestMethod()] 
     public void GetContainerTest() 
     { 
      MooseMvc.Infrastructure.DependencyInjectionInitialiser target = new MooseMvc.Infrastructure.DependencyInjectionInitialiser(); // TODO: Initialize to an appropriate value 
      IWindsorContainer container = target.GetContainer(); 
      foreach (IHandler assignableHandler in container.Kernel.GetAssignableHandlers(typeof(object))) 
      {    
       container.Resolve(assignableHandler.ComponentModel.Service); 
      } 
     } 

verileri oluşturduk

this._windsorContainer.Register(Component.For<TInterfaceType>() 
       .ImplementedBy(typeof(TConcreteType)).LifeStyle.PerWebRequest); 
uygular

Mesajımı fol olarak alırım düşükler:

Looks like you forgot to register the http module 
Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule Add '<add 
name="PerRequestLifestyle" 
type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, 
Castle.Windsor" />' to the <httpModules> section on your web.config. 
If you're running IIS7 in Integrated Mode you will need to add it to 
<modules> section under <system.webServer> 

cevap

1

i bulduk güzel rehber ben aynı problem vardı ve ben bir çözüm buldum

2

eklemek için çok başka değil

http://docs.castleproject.org/Windsor.Windsor-tutorial-part-three-a-testing-your-first-installer.ashx

..: LifestyleType'ı geçersiz kılmak için birim testinin çalışmasında bir olay tanımlayabilirsiniz.

void Kernel_ComponentModelCreated(Castle.Core.ComponentModel model) 
{ 
    if (model.LifestyleType == LifestyleType.Undefined) 
     model.LifestyleType = LifestyleType.Transient; 

    if (model.LifestyleType == LifestyleType.PerWebRequest) 
     model.LifestyleType = LifestyleType.Transient; 
} 

public UnitTest1() 
{ 
    containerWithControllers = new WindsorContainer(); 

    containerWithControllers.Kernel.ComponentModelCreated += new ComponentModelDelegate(Kernel_ComponentModelCreated); 
} 
+0

Teşekkürler! Tam olarak ihtiyacım olan şey. –

+0

Haha, birkaç ay sonra aynı konuya başka bir projede geldim ve tekrar benim için çözüyor. Teşekkürler! PS Sadece herhangi bir Installer veya Register aramalarından önce bu ComponentModelCreated etkinlik kaydını yapmayı unutmayın! –

İlgili konular