2010-02-22 10 views
5

Tengo un controlador de vista & que permite al usuario cargar un archivo en el servidor. Esto se hace en la vista usando un input type='file' y en el controlador obteniendo el valor de Request.Files (HttpRequestBase, devolviendo un HttpFileCollectionWrapper).Rhino Mocks: Mocking HttpRequestBase.Files

Tengo dificultades para burlar esto 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); 

El constructor de HttpFileCollectionWrapper requiere una HttpFileCollection, sin embargo, esto tiene un constructor internal.

¿Alguien puede sugerir cómo hacer funcionar este enfoque, o una variante del mismo?

Respuesta

6

Mock HttpFileCollectionBase en lugar de HttpFileCollectionWrapper:

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