PHPUnit assertEquals严格类型检查
发布时间:2020-12-13 22:26:54 所属栏目:PHP教程 来源:网络整理
导读:我的目标是确保对象图具有预期的值和类型.我想确保每个值都是预期的类型. 为此,遗憾的是,assertEquals()没有用处: $this-assertEquals( [ 'prop' = '0' ],[ 'prop' = 0 ]);// - no failures 在这种情况下,assertSame()运行良好: $this-assertSame( [ 'prop
我的目标是确保对象图具有预期的值和类型.我想确保每个值都是预期的类型.
为此,遗憾的是,assertEquals()没有用处: $this->assertEquals( [ 'prop' => '0' ],[ 'prop' => 0 ] ); // -> no failures 在这种情况下,assertSame()运行良好: $this->assertSame( [ 'prop' => '0' ],[ 'prop' => 0 ] ); // Failed asserting that Array &0 ( // 'prop' => 0 // ) is identical to Array &0 ( // 'prop' => '0' // ). assertSame()的问题是它还检查对象的引用: $this->assertSame( (object) [ 'prop' => 0 ],(object) [ 'prop' => 0 ] ); // Failed asserting that two variables reference the same object. 我有什么选择? 另外,我不确定为什么这是以这种方式设计的 – 对我来说,感觉assertSame()一次做两件事(我最多只有经过验证的对象类,而不是引用). 解决方法
您可以先检查数组密钥是否存在,然后检查是否有正确的类型,例如:
$this->assertArrayHasKey('prop',$input); $this->assertInternalType(PHPUnit_Framework_Constraint_IsType::TYPE_INT,$input['prop']); // or more simply as this->assertTrue(is_int($new_id)); $this->assertEquals(0,$input['prop']); 希望这个帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |