![](/img/trans.png)
[英]Message: Assert.AreEqual failed. Expected:<102.01>. Actual:<102.01>
[英]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.