2011-08-26 44 views
2

我編寫一個FTP客戶端應用程序,通過nunit工具測試我的功能。我嘗試模擬FTP數據流。 GetAllCsvFilesFromFTP方法調用FtpConnect()方法,但是在測試時我想在不連接FTP服務器的情況下獲取Stream數據。如何Moq FtpDataStream

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()))返回;(?)

你能幫我關於我如何模擬退貨數據。

回答

3
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); 
+0

謝謝你的回答。解決問題。 – sinanakyazici