2010-02-22 9 views
5

मेरे पास एक दृश्य & नियंत्रक है जो उपयोगकर्ता को सर्वर पर फ़ाइल अपलोड करने की अनुमति देता है। यह input type='file' का उपयोग करके और Request.Files (HttpRequestBase) का मान प्राप्त करके नियंत्रक में किया गया है, HttpFileCollectionWrapper लौटा रहा है)।राइनो मोक्स: मॉकिंग HttpRequestBase.Files

मुझे राइनो मोक्स का उपयोग करके इसे मजाक करने में कठिनाई हो रही है।

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 के लिए निर्माता एक HttpFileCollection की आवश्यकता है, लेकिन यह एक internal निर्माता है।

क्या कोई सुझाव दे सकता है कि इस दृष्टिकोण को कैसे प्राप्त किया जाए, या इसका एक संस्करण, काम करने के लिए कैसे?

उत्तर

6

नकली HttpFileCollectionBase बजाय HttpFileCollectionWrapper:

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