为了账号安全,请及时绑定邮箱和手机立即绑定

当调试器说它们相等时,为什么我的assert.areequal会失败?

当调试器说它们相等时,为什么我的assert.areequal会失败?

C#
回首忆惘然 2023-09-24 15:52:29
这个单元测试应该通过,但我不明白为什么没有通过。该代码在我的主控制器中运行,所以我知道它确实有效。但我觉得它在我的单元测试中的评估有所不同。我尝试过各种其他断言,但错误的布尔值除外。我不想进行错误的比较。    [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);


查看完整回答
反对 回复 2023-09-24
  • 1 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信