2011-03-28 40 views
2

我有一個擴展方法,斷言給定的值是列表中的值之一。如何建立一個新的NUnit約束

public static void IsEither<T>(this T value, params T[] allowedValues) 
{ 
    EqualConstraint isInAllowed = null; 

    foreach (var allowed in allowedValues) 
     isInAllowed = isInAllowed == null ? 
          Is.EqualTo(allowed) : isInAllowed.Or.EqualTo(allowed); 

    Assert.That(value, isInAllowed); 
} 

我不知道有沒有這樣做,特別是使用NUnit的ConstraintBuilder,ConstraintExpression的任何其他更好/更優雅的方式,ConstraintOperator等

回答

1

有一個CollectionAssert在NUnit的,應該幫助。如果您聲稱收集的物品包含其他物品,您可以嘗試如下所示:

public static void IsEither<T>(this T value, params T[] allowedValues) 
{ 
    CollectionAssert.Contains(allowedValues, value); 
} 
相關問題