这个单元测试应该通过,但我不明白为什么没有通过。该代码在我的主控制器中运行,所以我知道它确实有效。但我觉得它在我的单元测试中的评估有所不同。我尝试过各种其他断言,但错误的布尔值除外。我不想进行错误的比较。 [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 给出了这个代码。“预期的:。 ”我怀疑我错过了一些东西,但由于我在单元测试方面仍然处于绿色状态,所以我不知道我错过了什么。如果您没有什么建设性的意见,请转达任何意见。我一直在寻找我的问题的答案,但我发现的任何内容似乎都与我的问题无关,不足以提供任何帮助。
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 关注
- 88 浏览
添加回答
举报
0/150
提交
取消