断言平等匿名类型

时间:2017-08-07 08:10:22

标签: c# .net unit-testing anonymous-types

我遇到了一个断言两个匿名类型的问题。

到目前为止我做了什么

然而,再次尝试在断言异常之后再次测试相等性时:

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()
    });

我错过了什么?

1 个答案:

答案 0 :(得分:2)

即使您的测试项目中的匿名类型可访问,这并不意味着在您编写new { ... }时会使用它们。

如果你看actionResult.Value.GetType()expectedActionResult.Value.GetType()我强烈怀疑你会发现它们与不同的集会有不同的类型。

在这种情况下,最简单的解决方法可能只是比较生成的JSON。