我必须为这个方法写一个单元测试,但是我不能构造HttpPostedFileBase...当我在浏览器中运行该方法时,它工作得很好,但我真的需要一个自动单元测试。所以我的问题是:为了将文件传递给HttpPostedFileBase,我如何构造HttpPosterFileBase。
谢谢。
public ActionResult UploadFile(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
// ...
}
}发布于 2010-08-09 20:45:34
这样做怎么样:
public class MockHttpPostedFileBase : HttpPostedFileBase
{
public MockHttpPostedFileBase()
{
}
}然后,您可以创建一个新的:
MockHttpPostedFileBase mockFile = new MockHttpPostedFileBase();发布于 2014-03-02 03:08:05
在我的例子中,我通过asp.net MVC web接口和RPC web服务以及通过unittest使用核心注册核心。在这种情况下,为HttpPostedFileBase定义自定义包装器非常有用:
public class HttpPostedFileStreamWrapper : HttpPostedFileBase
{
string _contentType;
string _filename;
Stream _inputStream;
public HttpPostedFileStreamWrapper(Stream inputStream, string contentType = null, string filename = null)
{
_inputStream = inputStream;
_contentType = contentType;
_filename = filename;
}
public override int ContentLength { get { return (int)_inputStream.Length; } }
public override string ContentType { get { return _contentType; } }
/// <summary>
/// Summary:
/// Gets the fully qualified name of the file on the client.
/// Returns:
/// The name of the file on the client, which includes the directory path.
/// </summary>
public override string FileName { get { return _filename; } }
public override Stream InputStream { get { return _inputStream; } }
public override void SaveAs(string filename)
{
using (var stream = File.OpenWrite(filename))
{
InputStream.CopyTo(stream);
}
}https://stackoverflow.com/questions/3428276
复制相似问题