В чем разница между TypeOf и InstanceOf в NUnit? - PullRequest
0 голосов
/ 16 октября 2018

В NUnit, в чем разница между Is.TypeOf и Is.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
}

1 Ответ

0 голосов
/ 16 октября 2018

Документация довольно сложна для понимания:

TypoOf - проверяет, является ли объект точным типом.

InstanceOf -проверяет, что объект является экземпляром типа

. Это означает, что в отличие от 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, потому что он проверит, является ли тип результата только Boo.InstanceOf вернет true, потому что он проверит, является ли тип результата Boo или Woo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...