ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# assertThat() 可以用 `PHPUnit_Framework_Constraint` 类来订立更加复杂的断言。随后可以用 `assertThat()` 方法来评定这些断言。[Example A.42, “assertThat() 的用法”](# "Example A.42. assertThat() 的用法") 展示了如何用 `logicalNot()` 和 `equalTo()` 约束条件来表达与 `assertNotEquals()` 等价的断言。 >[info] ## assertThat(mixed $value, PHPUnit_Framework_Constraint $constraint[, $message = '']) 当 `$value` 不符合约束条件 `$constraint` 时报告错误,错误讯息由 `$message` 指定。 **Example A.42. assertThat() 的用法** ~~~ <?php class BiscuitTest extends PHPUnit_Framework_TestCase { public function testEquals() { $theBiscuit = new Biscuit('Ginger'); $myBiscuit = new Biscuit('Ginger'); $this->assertThat( $theBiscuit, $this->logicalNot( $this->equalTo($myBiscuit) ) ); } } ?> ~~~ [Table A.1, “约束条件”](# "Table A.1. 约束条件")列举了所有可用的 `PHPUnit_Framework_Constraint` 类。 **Table A.1. 约束条件** | 约束条件 | 含义 | |-----|-----| | `PHPUnit_Framework_Constraint_Attribute attribute(PHPUnit_Framework_Constraint $constraint, $attributeName)` | 此约束将另外一个约束应用于某个类或对象的某个属性。 | | `PHPUnit_Framework_Constraint_IsAnything anything()` | 此约束接受任意输入值。 | | `PHPUnit_Framework_Constraint_ArrayHasKey arrayHasKey(mixed $key)` | 此约束断言所评定的数组拥有指定键名。 | | `PHPUnit_Framework_Constraint_TraversableContains contains(mixed $value)` | 此约束断言所评定的 `array` 或实现了 `Iterator` 接口的对象包含有给定值。 | | `PHPUnit_Framework_Constraint_TraversableContainsOnly containsOnly(string $type)` | 此约束断言所评定的 `array` 或实现了 `Iterator` 接口的对象仅包含给定类型的值。 | | `PHPUnit_Framework_Constraint_TraversableContainsOnly containsOnlyInstancesOf(string $classname)` | 此约束断言所评定的 `array` 或实现了 `Iterator` 接口的对象仅包含给定类名的类的实例。 | | `PHPUnit_Framework_Constraint_IsEqual equalTo($value, $delta = 0, $maxDepth = 10)` | 此约束检验一个值是否等于另外一个。 | | `PHPUnit_Framework_Constraint_Attribute attributeEqualTo($attributeName, $value, $delta = 0, $maxDepth = 10)` | 此约束检验一个值是否等于某个类或对象的某个属性。 | | `PHPUnit_Framework_Constraint_FileExists fileExists()` | 此约束检验所评定的文件名对应的文件是否存在。 | | `PHPUnit_Framework_Constraint_GreaterThan greaterThan(mixed $value)` | 此约束断言所评定的值大于给定值。 | | `PHPUnit_Framework_Constraint_Or greaterThanOrEqual(mixed $value)` | 此约束断言所评定的值大于或等于给定值。 | | `PHPUnit_Framework_Constraint_ClassHasAttribute classHasAttribute(string $attributeName)` | 此约束断言所评定的类具有给定属性。 | | `PHPUnit_Framework_Constraint_ClassHasStaticAttribute classHasStaticAttribute(string $attributeName)` | 此约束断言所评定的类具有给定静态属性。 | | `PHPUnit_Framework_Constraint_ObjectHasAttribute hasAttribute(string $attributeName)` | 此约束断言所评定的对象具有给定属性。 | | `PHPUnit_Framework_Constraint_IsIdentical identicalTo(mixed $value)` | 此约束断言所评定的值与另外一个值全等。 | | `PHPUnit_Framework_Constraint_IsFalse isFalse()` | 此约束断言所评定的值为 `FALSE`。 | | `PHPUnit_Framework_Constraint_IsInstanceOf isInstanceOf(string $className)` | 此约束断言所评定的对象是给定类的实例。 | | `PHPUnit_Framework_Constraint_IsNull isNull()` | 此约束断言所评定的值为 `NULL`。 | | `PHPUnit_Framework_Constraint_IsTrue isTrue()` | 此约束断言所评定的值为 `TRUE`。 | | `PHPUnit_Framework_Constraint_IsType isType(string $type)` | 此约束断言所评定的值是指定类型的。 | | `PHPUnit_Framework_Constraint_LessThan lessThan(mixed $value)` | 此约束断言所评定的值小于给定值。 | | `PHPUnit_Framework_Constraint_Or lessThanOrEqual(mixed $value)` | 此约束断言所评定的值小于或等于给定值。 | | `logicalAnd()` | 逻辑与(AND)。 | | `logicalNot(PHPUnit_Framework_Constraint $constraint)` | 逻辑非(NOT)。 | | `logicalOr()` | 逻辑或(OR)。 | | `logicalXor()` | 逻辑异或(XOR)。 | | `PHPUnit_Framework_Constraint_PCREMatch matchesRegularExpression(string $pattern)` | 此约束断言所评定的字符串匹配于正则表达式。 | | `PHPUnit_Framework_Constraint_StringContains stringContains(string $string, bool $case)` | 此约束断言所评定的字符串包含指定字符串。 | | `PHPUnit_Framework_Constraint_StringEndsWith stringEndsWith(string $suffix)` | 此约束断言所评定的字符串以给定后缀结尾。 | | `PHPUnit_Framework_Constraint_StringStartsWith stringStartsWith(string $prefix)` | 此约束断言所评定的字符串以给定前缀开头。 |