2012-04-05 2 views
1

log4net에 대한 래퍼 라이브러리를 작성하고 있습니다. 이 라이브러리는 쿼리 문자열, 쿠키, 양식 필드 등의 컨텍스트 정보를 캡처 할 수 있어야합니다.콘솔 응용 프로그램에서 인위적으로 HttpContext 개체 채우기

TDD 클래스가 아닌 콘솔 응용 프로그램에서이 래퍼 클래스를 호출합니다.

다음과 같이 콘솔 응용 프로그램 내에 HttpContext 개체를 채우는 방법이 있습니까?

HttpContext c = new HttpContext(null); 
c.Request.QueryString.Keys[1] = "city"; 
c.Request.QueryString[1] = "Los Angeles"; 
c.Request.QueryString.Keys[2] = "state"; 
c.Request.QueryString[2] = "CA"; 

그런 다음 다음과 같이 검색 하시겠습니까?

Console.WriteLine(context.Request.QueryString.Keys[1]); 

위의 코드를 시도 할 때 다음과 같은 예외가 발생합니다.

Property or indexer 'System.Collections.Specialized.NameObjectCollectionBase.KeysCollection.this[int]' cannot be assigned to -- it is read only 
+0

콘솔 앱 내의 httpcontext에 의존하는 이유는 무엇입니까? 너 여기서 뭘하려고하는거야? – AndreasKnudsen

+0

애드 레아 (Adreas), 귀하의 우려를 해결하기 위해 제 질문을 편집했습니다. –

답변

1

그것은 HttpContext를 조롱 할 쉽게 수 없습니다. 컨텍스트를 설정하려면 Typemock Isolator을 사용할 수 있지만 그 컨텍스트는 자유롭지 않습니다. 또 다른 (더 나은) 접근 방법은 HttpContext를 추상화하고 콘솔 (테스트?) 클라이언트를 추상화 모의 구현에 구현하는 것입니다.

관련 문제