【问题标题】:IsType<T> and IsType(object, object) throwing IsTypeExceptionIsType<T> 和 IsType(object, object) 抛出 IsTypeException
【发布时间】:2014-11-12 23:20:29
【问题描述】:

我试图断言方法调用返回的对象是 List&lt;MyClass&gt; 类型,因此使用 xUnit 我尝试了以下操作:

var expected = typeof(List<MyClass>);
var actual = typeof(method());

Assert.IsType<List<MyClass>>(actual);
Assert.IsType(expected, actial);

以上两个都抛出IsTypeException 但是如果我执行:

var areSameType = expected == actual

areSameTypetrue。那么有没有我没有考虑到的更深层次的事情?

文档:

http://www.nudoq.org/#!/Packages/xunit.extensions/xunit.extensions/Assertions/M/IsType(T) http://www.nudoq.org/#!/Packages/xunit.extensions/xunit.extensions/Assertions/M/IsType

【问题讨论】:

    标签: c# xunit xunit.net


    【解决方案1】:

    Assert.IsType 的第一个参数应该是对象本身而不是它的类型,以下不应抛出:

    var expected = typeof(List<MyClass>);
    var actual = Method();
    
    Assert.IsType<List<MyClass>>(actual);
    Assert.IsType(expected, actual);
    

    【讨论】:

    • 您还可以将其简化为仅第 2 行和第 3 行,或第 1、2 和 4 行(即,将对象创建为 expected 或仅将类型和 actual 一起传递)。
    • 当然,但答案遵循问题的模式,恕我直言,更具可读性
    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2016-02-08
    相关资源
    最近更新 更多