我遇到了一个断言两个匿名类型的问题。
然而,再次尝试在断言异常之后再次测试相等性时:
1
Assert.IsTrue(actionResult.Value.Equals(expectedActionResult.Value));
预期:正确但是:错误
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()
});
我错过了什么?
答案 0 :(得分:2)
即使您的测试项目中的匿名类型可访问,这并不意味着在您编写new { ... }
时会使用它们。
如果你看actionResult.Value.GetType()
和expectedActionResult.Value.GetType()
我强烈怀疑你会发现它们与不同的集会有不同的类型。
在这种情况下,最简单的解决方法可能只是比较生成的JSON。