PHPUnit检查方法返回类型

PHPUnit检查方法返回类型,php,unit-testing,testing,phpunit,Php,Unit Testing,Testing,Phpunit,我很难测试返回方法的内容类型。成功时返回string或int,失败时返回array。所以像这样编码 public function createAddressBook($bookName) { if (true) { return 'OK'; } return ['error' => 'FAIL']; } 该方法的真正代码是API对新书ID的请求,它是int或string,我不知道将返回什么值。我的测试代码如下: public functi

我很难测试返回方法的内容类型。成功时返回
string或int
,失败时返回
array
。所以像这样编码

public function createAddressBook($bookName)
{
    if (true)
    {
        return 'OK';
    }
    return ['error' => 'FAIL'];
}
该方法的真正代码是API对新书ID的请求,它是
int或string
,我不知道将返回什么值。我的测试代码如下:

public function setUp()
{
    $this->stub = $this->createMock(\My\Class::class);
}

public function tearDown()
{
    $this->stub = null;
}

public function testCreateAddressBook()
{
   $this->stub->method('createAddressBook')->with('TestBookName');
   $result = $this->stub->createAddressBook('TestBookName');
   //what to do now?
}
我的问题是如何测试返回值类型的方法?

您可以使用is_array()、is_string()、is_int()或gettype()函数,或者使用!==操作员检查类型和值是否不同

is_array($var)检查变量是否为数组

is_string($var)检查它是否为字符串

is_int($var)检查它是否为整数

gettype($var)返回变量的类型

或者您可以使用phpUnit函数对此进行测试:

$this->assertIsInt($var)

$this->assertisearray($var)


$this->assertInternalType('some_datata_type',$var)

谢谢!老实说,我认为存在PHPUnit方式)
assertinernaltype
是“PHPUnit”方式(如答案中所述)