簡體   English   中英

Assert.AreEqual失敗。 預期: <XmlResult> 。 實際: <XmlResult>

[英]Assert.AreEqual failed. Expected:<XmlResult>. Actual:<XmlResult>

我是單元測試的新手,所以我可能做錯了。

我有一些XmlResult類:

public class XmlResult : ActionResult
    {
        public XmlDocument Document { private get; set; }

        public override void ExecuteResult(ControllerContext context)
        {
            //Do something
        }
    }

我也有控制器擴展方法:

public static class ControllerExtensions
    {
        public static XmlResult Xml(this Controller controller, XmlDocument document)
        {
            return new XmlResult { Document = document };
        }
    }

和測試方法:

[TestClass]
    public class ControllerExtensionsTests
    {
        #region Xml
        [TestMethod]
        public void XmlExtensionShouldReturnCorrectValue()
        {
            // Arrange
            var mockRepository = new Mock<T>();
            var productsController = new ProductController(mockProductRepository.Object);

            var someXmlDocument = new XmlDocument();

            // Act
            var actual = productsController.Xml(someXmlDocument);
            var expected = new XmlResult { Document = someXmlDocument };

            // Assert
            Assert.AreEqual(expected, actual);               
        }
        #endregion
    }

我打電話給Assert.AreEqual(expected, actual); 我的測試失敗,消息"Assert.AreEqual failed. Expected:<XmlResult>. Actual:<XmlResult>." 我究竟做錯了什么???

我會在你的xml結果類中添加一個override equals方法,並為equals比較做你自己的實現。

像下面的東西....

public class XmlResult : ActionResult
{
    public XmlDocument Document { private get; set; }

    public override void ExecuteResult(ControllerContext context)
    {
        //Do something
    }

    public bool Equals(XmlResult other)
    {
        if(ReferenceEquals(null, other))
        {
            return false;
        }
        if(ReferenceEquals(this, other))
        {
            return true;
        }
        return Equals(other.Document, Document);
    }

    public override int GetHashCode()
    {
        return (Document != null ? Document.GetHashCode() : 0);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM