Bonjour, je ne peux pas tester les types d'objets avec une contrainte, mais l'assertion classique fonctionne toujours
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>());
Quelle plateforme et quelle version nunit s'il vous plait ?
Salut @TobiasSekan. Je dirais que c'est prévu. Dans l'assertion classique, vous comparez simplement deux types. La contrainte "_teste si la valeur réelle est du type fourni comme argument ou d'un type dérivé._" et le type de la valeur typeof(TestEnum).GetEnumUnderlyingType()
est System.RuntimeType
.
Similaire à ce qui suit échouerait également (avec le même type de message)
Assert.That(typeof(string), Is.TypeOf<string>());
tandis que
Assert.That("", Is.TypeOf<string>());
travaillerait. Vous pouvez toujours reformuler la contrainte en Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));
Bonne prise @mikkelbu. Je vais fermer ceci en tant que not a bug
. @TobiasSekan Je peux voir la confusion, mais effectivement, votre premier paramètre est TypeOf<Type>
non ushort
.
D'accord, merci pour l'information
Commentaire le plus utile
Salut @TobiasSekan. Je dirais que c'est prévu. Dans l'assertion classique, vous comparez simplement deux types. La contrainte "_teste si la valeur réelle est du type fourni comme argument ou d'un type dérivé._" et le type de la valeur
typeof(TestEnum).GetEnumUnderlyingType()
estSystem.RuntimeType
.Similaire à ce qui suit échouerait également (avec le même type de message)
tandis que
travaillerait. Vous pouvez toujours reformuler la contrainte en
Assert.That(typeof(TestEnum).GetEnumUnderlyingType(), Is.EqualTo(typeof(ushort)));