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

这个单元测试应该通过,但我不明白为什么没有通过。该代码在我的主控制器中运行,所以我知道它确实有效。但我觉得它在我的单元测试中的评估有所不同。


我尝试过各种其他断言,但错误的布尔值除外。我不想进行错误的比较。


    [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 给出了这个代码。


“预期的:。 ”


我怀疑我错过了一些东西,但由于我在单元测试方面仍然处于绿色状态,所以我不知道我错过了什么。


如果您没有什么建设性的意见,请转达任何意见。我一直在寻找我的问题的答案,但我发现的任何内容似乎都与我的问题无关,不足以提供任何帮助。


回首忆惘然
浏览 89回答 1
1回答

尚方宝剑之说

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);
打开App,查看更多内容
随时随地看视频慕课网APP