php单元测试断⾔⽅法
1.assertArrayHasKey()
⽤法:$this->assertArrayHasKey('foo', ['bar' => 'baz']);
等同于array_key_exists(),查数组有⽊有某个键
2.assertClassHasAttribute()
⽤法:$this->assertClassHasAttribute('platform', User::class);
查看某个类是否有某个变量
3.assertArraySubset()
⽤法:$this->assertArraySubset(['config' => ['key-a', 'key-b']], ['config' => ['key-a']]);//false
   $this->assertClassHasAttribute(['config' => ['key-a']], ['config' => ['key-a', 'key-b']);//true
传⼊两个数组,判断第⼆个数组是否包含第⼀个数组
4.assertClassHasStaticAttribute()
⽤法:$this->assertClassHasStaticAttribute('foo', User::class);//false
    $this->assertClassHasStaticAttribute('platform', User::class);//true
查看某个类是否有某个静态变量
发现⼤概都挺简单的。。。
后⾯简单记录下吧
$this->assertContains(4, [1, 2, 3]);//判断数组是否含有某个数字元素
$this->assertContains('foo', 'FooBar');//判断字符串是否含有某个字符串
$this->assertContains('foo', 'FooBar', '', true);//判断字符串是否含有某个字符串(⼤⼩写不敏感)
assertContainsOnly();//类似$this->assertArrayHasKey
$this->assertContainsOnlyInstancesOf(
Foo::class,
[new Foo, new Bar, new Foo]
);//判断类集合是否包含Foo::class
$this->assertCount(0, ['foo']);//判断数组长度是否为传⼊参数
$this->assertDirectoryExists('/path/to/directory');//判断指定的⽬录是否存在
$this->assertDirectoryIsReadable('/path/to/directory');//判断指定的⽬录是否存在和是否可读
$this->assertDirectoryIsWritable('/path/to/directory');//判断指定的⽬录是否存在和是否可写
$this->assertEmpty(['foo']);//判断是否为空
$this->assertNotEmpty(['foo']);//判断是否为空
$this->assertEqualXMLStructure($expected, $actual);//判断xml结构
$this->assertEquals('bar', 'baz');//判断是否相等(数字,字符串,数组,对象)
$this->assertEquals(1.0, 1.1, '', 0.2);//细化到float $this->assertFalse(true);//判断是否为false
$this->assertFileEquals('/home/sb/expected', '/home/sb/actual');//判断指定的⽂件是否相同
$this->assertFileExists('/path/to/file');//判断⽂件是否存在
$this->assertFileIsReadable('/path/to/file');//判断⽂件是否可读
$this->assertFileIsWritable('/path/to/file');//判断⽂件是否可写
$this->assertGreaterThan(2, 1);//当第2个的值不⼤于第1个的值时报告错误
$this->assertGreaterThanOrEqual(2, 1);//当第2个参数的值不⼤于且不等于第1个参数的值时报告错误
$this->assertInfinite(1);//判断int
$this->assertInstanceOf(RuntimeException::class, new Exception);//当参数⼆不是参数⼀的实例时报错
$this->assertInternalType('string', 42);//判断参数2类型是否正确
$this->assertIsReadable('/path/to/unreadable');//⽂件或⽬录不可读时报告错误
$this->assertIsWritable('/path/to/unwritable');//⽂件或⽬录不可写⼊时报告错误
$this->assertJsonFileEqualsJsonFile( 'path/to/fixture/file', 'path/to/actual/file');//⽂件或⽬录的值不匹配时报告错误
$this->assertJsonStringEqualsJsonFile( 'path/to/fixture/file', json_encode(['Mascot' => 'ux']) );//json或⽂件或⽬录的值不匹配时报告错误$this->assertJsonStringEqualsJsonString( json_encode(['Mascot' => 'Tux']), json_encode(['Mascot' => 'ux']) );//两个json的值不匹配时报告错误$this->assertLessThan(1, 2);//当参数2的值不⼩于参数1的值时报告错误
$this->assertLessThanOrEqual(1, 2);//当参数2的值不⼩于且不等于参数1的值时报告错误
$this->assertNan(1);//不是 NAN 时报告错误
$this->assertNull('foo');//不是 null 时报告错误
$this->assertObjectHasAttribute('foo', new stdClass);//new stdClass为$object当 $object->attributeName 不存在时报告错误
$this->assertRegExp('/foo/', 'bar');//不匹配于正则表达式时报告错误
$this->assertStringMatchesFormat('%i', 'foo');//不匹配于定义的格式时报告错误
$this->assertStringMatchesFormatFile('/path/', 'foo');//不匹配于内容所定义的格式时报告错误
$this->assertSame('2204', 2204);//当两个变量的值与类型不完全相同时报告错误
$this->assertSame(new stdClass, new stdClass);//当两个变量不是指向同⼀个对象的引⽤时报告错误
$this->assertStringEndsWith('suffix', 'foo');//当参数2不以参数1结尾时报告错误
$this->assertStringEqualsFile('/home/sb/expected', 'actual');//当参数1(路径)所指定的⽂件其内容不是参数2时报告错误
$this->assertStringStartsWith('prefix', 'foo');//当参数2不以参数1开头时报告错误
$this->assertThat( $theBiscuit, $this->logicalNot( $this->equalTo($myBiscuit) ) );//当 $value(参数1) 不符合约束条件 $constraint(参数2) 时报告错误
表 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接⼝的对象包含有给定值。
equals不等于
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)此约束断⾔所评定的字符串以给定前缀开头。
$this->assertTrue(false);//当参数为 false 时报告错误
$this->assertXmlFileEqualsXmlFile('/home/l', '/home/l');//当参数2 对应的 XML ⽂档与参数1 对应的 XML ⽂档不相同时报告错误$this->assertXmlStringEqualsXmlFile('/home/l', '<foo><baz/></foo>');//当参数2 对应的 XML ⽂档与参数1 对应的 XML ⽂档不相同时报告错误$this->assertXmlStringEqualsXmlString('<foo><bar/></foo>', '<foo><baz/></foo>');//当参数2 对应的 XML ⽂档与参数1 对应的 XML ⽂档不相同时报告错误