這個單元測試應該通過,但我不明白為什么沒有通過。該代碼在我的主控制器中運行,所以我知道它確實有效。但我覺得它在我的單元測試中的評估有所不同。我嘗試過各種其他斷言,但錯誤的布爾值除外。我不想進行錯誤的比較。 [TestMethod] public void DownloadFileNames() { // Arrange string ftpBase = "myfiles.com/public/doc"; string fileName = "10408c"; Search model = new Search(); model.FileName = fileName; //A string to hold the base FTP address: Search searchResults = new Search(); List<string> fnl = new List<string>(); var uriBuilder = new UriBuilder(); // Act uriBuilder.Scheme = "ftp"; uriBuilder.Host = ftpBase; FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(uriBuilder.Uri); reqFTP.Method = WebRequestMethods.Ftp.ListDirectory; FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); Stream responseStream = response.GetResponseStream(); List<string> files = new List<string>(); StreamReader reader = new StreamReader(responseStream); while (!reader.EndOfStream) files.Add(reader.ReadLine()); reader.Close(); responseStream.Dispose(); //Loop through the resulting file names. foreach (string folder in files) { if (folder.IndexOf(".") < 1) { var childDirectory = uriBuilder.Uri + folder + "/"; FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(childDirectory); request.Method = WebRequestMethods.Ftp.ListDirectory; response = (FtpWebResponse)request.GetResponse(); responseStream = response.GetResponseStream(); reader = new StreamReader(responseStream); string result = reader.ReadToEnd(); reader.Close();我希望 fnl 和字符串匹配。但 Expected 給出了這個代碼?!邦A期的:。 ”我懷疑我錯過了一些東西,但由于我在單元測試方面仍然處于綠色狀態,所以我不知道我錯過了什么。如果您沒有什么建設性的意見,請轉達任何意見。我一直在尋找我的問題的答案,但我發現的任何內容似乎都與我的問題無關,不足以提供任何幫助。
1 回答

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
fnl是一個字符串列表(即:)List<string>,而另一個只是一個原始的String
鑒于所顯示的代碼,這兩個完全不同的對象不可能匹配
假設列表僅包含一個字符串,則僅使用列表中的索引
//...
Assert.AreEqual(fnl[0], "ftp://myfiles.com/public/doc/cor/10408c.dat");
只是為了可讀性
//...
string expected = "ftp://myfiles.com/public/doc/cor/10408c.dat";
string actual = fnl[0];
Assert.AreEqual(expected, actual);
- 1 回答
- 0 關注
- 115 瀏覽