2009-10-09 6 views
1

Excel 문서를 작성하고 사용자에게 다운로드시키려는 타사 프레임 워크가 있습니다.HttpResponse를 전달해야 할 때 제 3 자 프레임 워크를 테스트하는 방법

문제는 사용자가 많은 수의 레코드를 내보내려고 시도하고 OutOfMemoryException을 던지고 있다는 것입니다.

이 코드가 제 3 자 프레임 워크가 아니라 내 코드에서 발생하는지 확인하기 위해 테스트를 작성하려고하지만 Save 메서드는 HttpResponse 개체를 메서드 중 하나로 사용합니다.

HttpResponse 객체를 전달할 수있는 방법은 무엇입니까?

사용 예 :

excel.Save("test.xls", 
    OpenType.OpenInExcel, 
    FileType.Excel2003, 
    HttpContext.Current.Response); 

은 분명히 HttpContext.Current.Reponse이 따라서, 단위 테스트에서 내 문제를 작동하지 않습니다.

+0

어떤 프로그래밍 언어를 사용합니까? –

+0

ASP.NET에 있지만 C#으로 쓰고 있습니다. 태그를 추가하겠습니다. – Joseph

답변

1

[면책 조항 : 나는 Typemock에서 일] 대신 Isolator을 사용하십시오 가짜 인스턴스의 유형 HttpResponse에을 만들기 위해 실제 HttpResponse에 객체가 필요하고이를 반환하지 않습니다

으로 HttpContext

var fake = Isolate.Fake.Instance<HttpResponse>(); 
Isolate.WhenCalled(() => HttpContext.Current.Response).WillReturn(fake); 

당신은 가짜 객체에 속성을 설정 및 변경할 수 있습니다 그것은 행동 유입니다 : .Current.Response가 호출된다 을 불러라. 단락. 전화 할 때.

이 접근법의 장점은 복잡한 환경을 설정할 필요가 없다는 것입니다. 실제로이 코드를 간단한 단위 테스트 내에서 사용할 수 있습니다.

2

HttpRequestBase from .Net 3.5 SP1은 이러한 목적으로 설계되었지만 타사 코드가 사용하지 않는 한 아무런 도움이되지 않습니다. (드롭 인으로 교체하기 때문에 사용하기가 어렵습니다.)

다른 코드에서 사용하지 않으면 코드를 Cassini에 호스팅하고 HTTP를 통해 요청할 수 있습니다.

관련 문제