2014-12-20 8 views
0

IIS에서 내 응용 프로그램을 실행하여 서비스가 예상대로 작동하는지 테스트합니다. 또한 다른 내부 클래스 작업에 대한 단위 테스트를 실행합니다.WCF 및 단위 테스트에 대한 다른 SessionContext

Fluently.Configure() 
       .Database(MySQLConfiguration.Standard 
           .ConnectionString(myconnectionString) 
           .ShowSql() 
       ) 
       .CurrentSessionContext<WcfOperationSessionContext>() 
       //.CurrentSessionContext("call") 
       .Mappings(m => 
          m.FluentMappings 
           .AddFromAssemblyOf<DtoDifficulty>()) 
       .BuildSessionFactory(); 

당신은 //.CurrentSessionContext("call ")으로, 주석 라인을 알 수 있습니다

다음은 내 세션 공장 구성입니다. IIS에서 서비스를 실행할 때 위의 행을 사용하십시오. .CurrentSessionContext < WcfOperationSessionContext>(), 단위 테스트를 실행할 때 .CurrentSessionContext ("call").

실행중인 케이스를 알고 이러한 옵션 중 하나를 자동으로 설정하는 방법이 있습니까?

답변

0

올바른 컨텍스트를 선택하는 방법을 찾았습니다. 단위 테스트를 실행할 경우 HttpContext.Current는 null을 반환합니다. 내 서비스를 실행하면 객체의 인스턴스를 반환합니다.

var fluentConfiguration = Fluently.Configure().Database(MySQLConfiguration.Standard 
                   .ConnectionString(myConnectionString) 
                   .ShowSql() 
                  ); 

var hasHttpContext = HttpContext.Current != null; 

if (hasHttpContext) 
    fluentConfiguration.CurrentSessionContext<WcfOperationSessionContext>(); 
else 
    fluentConfiguration.CurrentSessionContext("call"); 

_sessionFactory = fluentConfiguration 
            .Mappings(m => 
               m.FluentMappings 
               .AddFromAssemblyOf<DtoDifficulty>()) 
            .BuildSessionFactory(); 
: 여기

코드입니다