2010-02-22 6 views
5

사용자가 서버에 파일을 업로드 할 수있는보기 & 컨트롤러가 있습니다. 이것은 input type='file'을 사용하고 컨트롤러에서 Request.Files (HttpRequestBase, HttpFileCollectionWrapper을 리턴) 값을 가져 오는 뷰에서 수행됩니다.Rhino 모의 : 조롱 HttpRequestBase.Files

Rhino Mocks를 사용하여 조롱하는 데 어려움이 있습니다.

HttpContextBase mockHttpContext = MockRepository.GenerateMock<HttpContextBase>(); 
HttpRequestBase mockRequest = MockRepository.GenerateMock<HttpRequestBase>(); 
mockHttpContext.Stub(x => x.Request).Return(mockRequest); 

mockRequest.Stub(x => x.HttpMethod).Return("GET"); 

// Next line fails - throws MissingMethodException 
// (Can't find a constructor with matching arguments) 
HttpFileCollectionWrapper files = 
    MockRepository.GenerateMock<HttpFileCollectionWrapper>(); 

files.Stub(x => x.Count).Return(1); 

mockRequest.Stub(x => x.Files).Return(files); 

HttpFileCollectionWrapper의 생성자 그러나 이것은 internal 생성자가, HttpFileCollection이 필요합니다.

누구나이 접근법 또는 그 변형을 어떻게 작동시키는 지 제안 할 수 있습니까?

답변

6

모의 HttpFileCollectionBase 대신 HttpFileCollectionWrapper :

var filesMock = MockRepository.GenerateMock<HttpFileCollectionBase>(); 
filesMock.Stub(x => x.Count).Return(1); 
mockRequest.Stub(x => x.Files).Return(filesMock); 
관련 문제