Как построить HttpPostedFileBase? - PullRequest
       21

Как построить HttpPostedFileBase?

5 голосов
/ 07 августа 2010

Мне нужно написать модульный тест для этого метода, но я не могу создать HttpPostedFileBase ... Когда я запускаю метод из браузера, он работает хорошо, но мне действительно нужен для этого автоматический модульный тест.Поэтому мой вопрос: как мне создать HttpPosterFileBase, чтобы передать файл в HttpPostedFileBase.

Спасибо.

    public ActionResult UploadFile(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (var file in files)
        {
           // ...
        }
    }

Ответы [ 2 ]

6 голосов
/ 09 августа 2010

Как насчет того, чтобы сделать что-то вроде этого:

public class MockHttpPostedFileBase : HttpPostedFileBase
{
    public MockHttpPostedFileBase()
    {

    }
}

, тогда вы можете создать новый:

MockHttpPostedFileBase mockFile = new MockHttpPostedFileBase();
2 голосов
/ 01 марта 2014

В моем случае я использую ядро ​​регистрации ядра через веб-интерфейс asp.net MVC, а также через веб-сервис RPC и через 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);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...