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
查看某个类是否有某个静态变量
发现大概都挺简单的。。。
后面简单记录下吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | $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/to/expected.txt' , '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 接口的对象包含有给定值。 |
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) |
此约束断言所评定的字符串以给定前缀开头。 |
1 2 3 4 | $this ->assertTrue(false); //当 参数 为 false 时报告错误 $this ->assertXmlFileEqualsXmlFile( '/home/sb/expected.xml' , '/home/sb/actual.xml' ); //当 参数2 对应的 XML 文档与 参数1 对应的 XML 文档不相同时报告错误 $this ->assertXmlStringEqualsXmlFile( '/home/sb/expected.xml' , '<foo><baz/></foo>' ); //当 参数2 对应的 XML 文档与 参数1 对应的 XML 文档不相同时报告错误 $this ->assertXmlStringEqualsXmlString( '<foo><bar/></foo>' , '<foo><baz/></foo>' ); //当 参数2 对应的 XML 文档与 参数1 对应的 XML 文档不相同时报告错误 |
官方文档:https://phpunit.de/manual/current/zh_cn/appendixes.assertions.html#appendixes.assertions.assertArrayHasKey
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!