我遇到了一个问题,需要断言两个匿名类型是否相等。
目前我已经做了以下事情:
- 我有一个单元测试项目,可以查看我的受测试项目的内部信息,因此匿名类型对测试项目可见。
- 我已经在这里阅读了有关匿名类型更像结构体(值类型)而不是引用类型的行为: Why anonymous types Equals implementation compares fields?
然而,在尝试测试相等性时,以下断言异常仍然会发生:
1.
Assert.IsTrue(actionResult.Value.Equals(expectedActionResult.Value));
期望值:True 实际值:False
2.
Assert.AreEqual(actionResult.Value, expectedActionResult.Value);
期望结果: <{ errorCode = -4, errorMessage = 请求中参数无效或缺失。 }> (<>f__AnonymousType0'2[System.Int32,System.String]) 实际结果: <{ errorCode = -4, errorMessage = 请求中参数无效或缺失。 }> (<>f__AnonymousType0'2[System.Int32,System.String])
这里是我创建实际结果和期望结果的地方:
var actionResult = _systemUnderTest.GetToken(null) as JsonResult;
var expectedActionResult =
new JsonResult(new
{
errorCode = (int)ErrorCodes.InvalidOrMissingParameters, errorMessage = ErrorCodes.InvalidOrMissingParameters.GetDescription()
});
我漏掉了什么?