2011-08-26 4 views
2

FTPクライアントをコード化し、nunitツールで自分の機能をテストするアプリケーションです。私はFTPデータストリームを模擬しようとします。 GetAllCsvFilesFromFTPメソッドはFtpConnect()メソッドを呼び出しますが、テスト中にFTPサーバーに接続せずにStreamデータを取得したいとします。 。(?):FtpDataStreamをMoqする方法

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

関連する問題