gpt4 book ai didi

c# - NUnit 中的 TypeOf 和 InstanceOf 有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:20 25 4
gpt4 key购买 nike

NUnit中,Is.TypeOfIs.InstanceOf有什么区别?

在下面的示例中,我注意到它们都返回 true:

public class Foo
{
public Boo GetBoo()
{
return new Boo();
}
}

public class Boo { }

NUnit测试方法:

[Test]
public void GetBoo_WhenCalled_ReturnBoo
{
var foo = new Foo();
var result = foo.GetBoo();

Assert.That(result, Is.TypeOf<Boo>()); //return true
Assert.That(result, Is.InstanceOf<Boo>()); //return true
}

最佳答案

documentation有点难以理解:

TypoOf - tests that an object is an exact Type.

InstanceOf - tests that an obect is an instance of a Type

这意味着与 TypoOf 相比,InstanceOf 也将测试衍生物。

所以,在下面的例子中:

public class Foo
{
public Boo GetBoo()
{
return new Woo();
}
}

public class Woo : Boo { }

测试方法:

[Test]
public void GetBoo_WhenCalled_ReturnBoo()
{
var foo = new Foo();
var result = foo.GetBoo();

Assert.that(result, Is.TypeOf<Boo>()); // False ("Boo")
Assert.that(result, Is.InstanceOf<Boo>()); //True ("Boo" or "Woo")
}

TypeOf 将返回 false,因为它只检查结果类型是否为 BooInstanceOf 将返回 true,因为它检查结果类型是 Boo 还是 Woo

关于c# - NUnit 中的 TypeOf 和 InstanceOf 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52843721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com