【问题标题】:PHPUnit check method returns typePHPUnit 检查方法返回类型
【发布时间】:2020-02-06 02:54:02
【问题描述】:

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

public function createAddressBook($bookName)
{
    if (true)
    {
        return 'OK';
    }
    return ['error' => 'FAIL'];
}

该方法的真正代码是对新书 ID 的 API 请求,即int or 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?
}

我的问题是如何测试返回值类型的方法?

【问题讨论】:

    标签: php unit-testing testing phpunit


    【解决方案1】:

    您可以使用 is_array()、is_string()、is_int() 或 gettype() 函数或使用 !== 运算符来检查类型和值是否不同。

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

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

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

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

    或者你可以用 phpUnit 函数来测试:

    $this->assertIsInt($var);

    $this->assertIsArray($var);

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

    【讨论】:

    • 谢谢!老实说,我认为存在一种 PHPUnit 方式)
    • assertInternalType 是“phpunit”方式(如答案中所述)
    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多