2013-11-25 2 views
0

IOC 용 Castle Windsor와 ORM 용 Fluent NHibernate를 사용하고 있습니다. 매핑 및 기본 기능을 확인하기 위해 통합 테스트를 만들고 있습니다. Castle Windsor가 인스턴스화 한 객체에 액세스하려면 어떻게합니까? 여기 Castle Fluent 통합 테스트에서 NHiberate에 액세스하는 방법

public class RepositoryInstaller : IWindsorInstaller 
{ 
    public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container.Register(
      Component.For<IContainerRepository>().ImplementedBy<ContainerRepository>().LifestylePerWebRequest()); 

    } 
} 

내 저장소입니다 : 여기

내 저장소 설치 프로그램입니다

공용 인터페이스의 IContainerRepository { 는 IEnumerable GetActiveContainers(); }

공용 클래스 ContainerRepository : BaseRepository, IContainerRepository는 { 공개 ContainerRepository (ISession 세션) :베이스 (세션) { }

public IEnumerable<Container> GetActiveContainers() 
{ 
    var query = Session.CreateCriteria<Container>() 
     .Add(Restrictions.Eq("ContentsType", "Raw Material")) 
     .Add(Expression.Sql("QTY_IN - QTY_OUT > 0")); 

    return query.List<Container>(); 
} 

} 여기

간단한 테스트입니다 쓸 내용 :

[Test] 
public void GetActiveTest() 
{ 
    var repo = **DoSomethingHere**.GetInstance<IContainerRepository>(); 
    var list = repo.GetActiveContainers().ToList(); 
    Assert.IsTrue(list.Count > 0); 
} 

답변

0

두 가지 별도의 것을 테스트하고 있습니다. 한 세트의 테스트를 통해 Windsor 설치 프로그램의 유효성을 확인하고 다른 하나는 저장소의 유효성을 검사하십시오.

저장소를 테스트 적절한 테스트 데이터로 데이터베이스를 설정 한 다음 ContainerRepository 인스턴스를 생성하고 그것에 GetAllContainers에게 메소드를 호출합니다. 데이터베이스에 어떤 테스트 데이터가 있는지 알게되면 반환되는 내용이 적절한 지 확인할 수 있습니다.

[Test] 
public void Build_Returns_Container_With_Resolvable_Repo() 
{ 
    using (container = ContainerBuilder.Build()) 
    { 
     var actualContainerRepo = container.Resolve<IContainerRepository>(); 
     Assert.IsNotNull(actualContainerRepo); 
    } 
} 
+0

가 어떻게이 ContainerRepository에 전달하는 유창함 자 NHibernate 세션에 대한 액세스를 얻을 :

[TestFixtureSetup] public void Init() { Fluently.Configure() .Database(/* examples here */) .Mappings(...) .BuildSessionFactory(); } [TestFixtureTeardown] public void Cleanup() { // tear down the session here... } [Test] public void GetActiveContainer_Returns_Expected_Containers() { var sut = new ContainerRepository(); var list = sut.GetActiveContainers().ToList(); Assert.IsTrue(list.Count > 0); } 

귀하의 윈저 컨테이너 테스트는 다음과 같이 보일 수 있는가? –

+0

죄송합니다 코드 서식을 ... 그것을 고칠 수 없습니다. –

관련 문제