Как использовать FtpDataStream - PullRequest
2 голосов
/ 26 августа 2011

Я пишу клиентское приложение FTP, проверяя свои функции с помощью nunit tool.Я пытаюсь смоделировать поток данных FTP.GetAllCsvFilesFromFTP вызывает метод FtpConnect (), но во время тестирования я хочу получить данные потока без подключения к FTP-серверу.

    public List<string> GetAllCsvFilesFromFTP()
    {
        var files = new List<string>();
        var responseStream = _ftpConnection.FtpConnect(WebRequestMethods.Ftp.ListDirectory);
        if (responseStream != null)
        {
            var reader = new StreamReader(responseStream);
            ReadResponseStream(files, reader);
            reader.Close();
            responseStream.Close();
        }
        return files.OrderByDescending(p => p).ToList();
    }
    public Stream FtpConnect(string connectionType, string fileName = "")
    {
        try
        {
            var request = (FtpWebRequest)WebRequest.Create(_readConfigXml.FtpUrl + fileName);
            request.Credentials = new NetworkCredential(_readConfigXml.UserName, _readConfigXml.PassWord);
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = true;
            request.Method = connectionType;
            var response = (FtpWebResponse) request.GetResponse();
            var stream = response.GetResponseStream();
            return stream;
        }
        catch (Exception ex)
        {
            _logWriter.WriteLog(_readConfigXml.LogPath, ex.Message);
            return null;
        }
    }

Я пытаюсь смоделировать метод установки теста ниже: _ftpConnection.Setup (m => m.FtpConnect (It.IsAny (), It.IsAny ())). Returns (?);

Не могли бы вы помочь мне с тем, как я могу имитировать данные Returns.

1 Ответ

3 голосов
/ 26 августа 2011
string csvdata = "1,2,3,4,5":
var ms = new MemoryStream(Encoding.UTF8.GetBytes(csvdata));
ms.Position = 0;
_ftpConnection.Setup(m => m.FtpConnect(It.IsAny(), It.IsAny())).Returns(ms);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...