assertThat()


可以用 PHPUnit_Framework_Constraint 类来订立更加复杂的断言。随后可以用 assertThat() 方法来评定这些断言。例 A.49 展示了如何用 logicalNot()equalTo() 约束条件来表达与 assertNotEquals() 等价的断言。

assertThat(mixed $value, PHPUnit_Framework_Constraint $constraint[, $message = ''])

$value 不符合约束条件 $constraint 时报告错误,错误讯息由 $message 指定。


例 A.49: assertThat() 的用法

  1. <?php
  2. use PHPUnit\Framework\TestCase;
  3.  
  4. class BiscuitTest extends TestCase
  5. {
  6. public function testEquals()
  7. {
  8. $theBiscuit = new Biscuit('Ginger');
  9. $myBiscuit = new Biscuit('Ginger');
  10.  
  11. $this->assertThat(
  12. $theBiscuit,
  13. $this->logicalNot(
  14. $this->equalTo($myBiscuit)
  15. )
  16. );
  17. }
  18. }
  19. ?>

表 A.1列举了所有可用的 PHPUnit_Framework_Constraint 类。


表 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_DirectoryExists directoryExists() 此约束检验所评定的目录是否存在。
PHPUnit_Framework_Constraint_FileExists fileExists() 此约束检验所评定的文件名对应的文件是否存在。
PHPUnit_Framework_Constraint_IsReadable isReadable() 此约束检验所评定的文件名对应的文件是否可读。
PHPUnit_Framework_Constraint_IsWritable isWritable() 此约束检验所评定的文件名对应的文件是否可写。
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) 此约束断言所评定的字符串以给定前缀开头。