2010-02-22 21 views
5

Ho un controller di vista & che consente all'utente di caricare un file sul server. Questo viene fatto nella vista usando un input type='file' e nel controller ottenendo il valore di Request.Files (HttpRequestBase, restituendo un HttpFileCollectionWrapper).Rhino Mock: Mocking HttpRequestBase.Files

Ho difficoltà a deriderlo usando 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); 

Il costruttore per HttpFileCollectionWrapper richiede un HttpFileCollection, tuttavia questo ha un costruttore internal.

Qualcuno può suggerire come utilizzare questo approccio o una sua variante?

risposta

6

Mock HttpFileCollectionBase invece di HttpFileCollectionWrapper:

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