xunit测试web api 2 controller:抛出Xunit.Sdk.IsTypeException

时间:2016-05-26 15:30:51

标签: c# asp.net-web-api xunit

我不想在web api控制器上测试插入方法。该方法返回CreatedNegotiatedContentResult。一切顺利到断言......

Assert.IsType(typeof(CreatedNegotiatedContentResult<Justif>), result);

和繁荣......

Xunit.Sdk.IsTypeException was unhandled by user code
  Actual=System.Web.Http.Results.CreatedNegotiatedContentResult`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
  ActualTitle=Actual
  Expected=System.Web.Http.Results.CreatedNegotiatedContentResult`1[[HubHacienda.Justif, HubHacienda, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
  ExpectedTitle=Expected
  HResult=-2146233088
  Message=Assert.IsType() Failure
Expected: System.Web.Http.Results.CreatedNegotiatedContentResult`1[[HubHacienda.Justif, HubHacienda, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
Actual:   System.Web.Http.Results.CreatedNegotiatedContentResult`1[[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
  Source=xunit.assert
  UserMessage=Assert.IsType() Failure
  StackTrace:
       at Xunit.Assert.IsType(Type expectedType, Object object) in C:\BuildAgent\work\cb37e9acf085d108\src\xunit.assert\Asserts\TypeAsserts.cs:line 99
       at HubHacienda.Tests.JustifsControllerTest.Post_WhenModelValid_ShouldReturnSuccess() in C:\NotilusTNE\Sources\Hub\Hub Hacienda\Dev\HubHacienda\HubHacienda.Tests\JustifsControllerTests.cs:line 52
  InnerException: 

这是我的测试框架爆炸了吗?这不可能是对的吗?

1 个答案:

答案 0 :(得分:0)

好的,这似乎是一个xunit bug。问题是我正在比较SystemType&lt; MyType&gt;形式的泛型类型。 xunit项目中的typeof()运算符返回一个表示我的dll的强名称,而result.GetType()返回一个带有系统dll的强名称。

解决方法是仅比较Type.Name ...

System.Type expectation = typeof(System.Web.Http.Results.CreatedNegotiatedContentResult<Justif>);
System.Type tristeRealite = result.GetType();
Assert.Equal(expectation.Name, tristeRealite.Name);