Rhino Mocks:模拟HttpRequestBase.Files

Ric*_*ett 6 asp.net-mvc rhino-mocks file-upload

我有一个视图和控制器,允许用户将文件上传到服务器.这是在视图中使用input type='file'和在控制器中通过获取Request.Files(HttpRequestBase,返回a HttpFileCollectionWrapper)的值来完成的.

我很难用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);
Run Code Online (Sandbox Code Playgroud)

构造函数HttpFileCollectionWrapper需要一个HttpFileCollection,但是它有一个internal构造函数.

任何人都可以建议如何使这种方法或其变体工作?

Dar*_*rov 7

模拟HttpFileCollectionBase而不是HttpFileCollectionWrapper:

var filesMock = MockRepository.GenerateMock<HttpFileCollectionBase>();
filesMock.Stub(x => x.Count).Return(1);
mockRequest.Stub(x => x.Files).Return(filesMock);
Run Code Online (Sandbox Code Playgroud)