Rhino Mocks:模拟HttpRequestBase.Files

6

我有一个视图和控制器,允许用户将文件上传到服务器。在视图中使用input type='file',在控制器中通过获取Request.Files的值(HttpRequestBase,返回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);
HttpFileCollectionWrapper 的构造函数需要一个 HttpFileCollection,但是它的构造函数是 internal 的。
有人能建议如何让这个方法或其变体工作吗?
1个回答

7

使用Mock HttpFileCollectionBase代替HttpFileCollectionWrapper

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接