Olá, não posso testar tipos de objetos com uma restrição, mas o assert clássico ainda está funcionando
enum TestEnum : ushort
{
one = 0x01,
two = 0x02
}
// test is okay
Assert.AreEqual(typeof(ushort), typeof(TestEnum).GetEnumUnderlyingType());
// test failed
//
// Expected: <System.Uint16>
// But was: <System.RuntimeType>
//
Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.TypeOf<ushort>());
Qual plataforma e qual versão de nunit, por favor?
Olá @TobiasSekan. Eu diria que isso é esperado. Na afirmação clássica, você está apenas comparando dois tipos. A restrição "_testa se o valor real é do tipo fornecido como um argumento ou um tipo derivado._" e o tipo do valor typeof(TestEnum).GetEnumUnderlyingType()
é System.RuntimeType
.
Semelhante, o seguinte também falharia (com o mesmo tipo de mensagem)
Assert.That(typeof(string), Is.TypeOf<string>());
enquanto que
Assert.That("", Is.TypeOf<string>());
trabalharia. Você sempre pode reformular a restrição como Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));
Boa captura @mikkelbu. Vou fechar isso como not a bug
. @TobiasSekan Eu posso ver a confusão, mas efetivamente seu primeiro parâmetro é TypeOf<Type>
not ushort
.
Ok, obrigado pela informação
Comentários muito úteis
Olá @TobiasSekan. Eu diria que isso é esperado. Na afirmação clássica, você está apenas comparando dois tipos. A restrição "_testa se o valor real é do tipo fornecido como um argumento ou um tipo derivado._" e o tipo do valor
typeof(TestEnum).GetEnumUnderlyingType()
éSystem.RuntimeType
.Semelhante, o seguinte também falharia (com o mesmo tipo de mensagem)
enquanto que
trabalharia. Você sempre pode reformular a restrição como
Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));