断言 PHPUnit 中布尔值/字符串的函数结果



我正在使用PHPUnit来自动测试我的应用程序。我想断言可以返回布尔值或字符串的函数调用的结果。我的代码如下所示:

$myExample = new MyExample();
$value = $myExample->getValue();
if ($value !== false) {
  assertNotNull($value);
  assertFalse(empty($value));
}

但是,是否可以检查方法是否成功执行?"assertTrue($value("是正确的方式吗?

更新:已弃用的方法

如果要

检查数据类型,请使用以下方法:

assertIsArray()
assertIsBool()
assertIsFloat()
assertIsInt()
assertIsNumeric()
assertIsObject()
assertIsResource()
assertIsString()
assertIsScalar()
assertIsCallable()
assertIsIterable()
assertIsNotArray()
assertIsNotBool()
assertIsNotFloat()
assertIsNotInt()
assertIsNotNumeric()
assertIsNotObject()
assertIsNotResource()
assertIsNotString()
assertIsNotScalar()
assertIsNotCallable()
assertIsNotIterable()

更新:根据 mtiziani 下面的评论,此答案适用于低于 9.# 的 PHPUnit 版本。

如果要断言值的数据类型,正确的方法是:

$this->assertInternalType('[expected_data_type]', $value);

PHPUnit 可以验证[expected_data_type]可以是以下任何一种:

'array'
'boolean'
'bool'
'float'
'integer'
'int'
'null'
'numeric'
'object'
'resource'
'string'
'scalar'
'callable'

因此,要断言返回值是布尔值,您需要:

$this->assertInternalType('bool', $value);

您可以使用:

$this->assertSame($expect, $actual) 

它将测试类型和值(即 $expected===$actual(。

如果要测试函数是否针对某些数据返回 false,则可以考虑在单独的测试方法中执行此操作。 与测试字符串相同。 如果一次测试一个值类型,则断言不太复杂。 有些人认为每个测试方法有一个断言是一种很好的单元测试实践。

$this->assertFalse( $returnVal );
$this->assertInternalType('string', $returnValue);

最新更新