2011-03-28 64 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); 
}