如何在phpunit中测试多个可能的有效值?

时间:2017-05-25 03:43:18

标签: php phpunit

我有一个简单的方法get_db_password()可以返回一个字符串,或者在某些情况下它可以返回null,这两种情况都应该被视为有效的响应。
我真正测试的是,如果调用getter,脚本不会爆炸 如何编写测试/断言 - 调用get_db_password()并断言脚本没有死,或者可以测试响应是null还是字符串。例如

$this->assertInternalType( "string || null", $this->config->get_db_password() );

源代码

<?php

class Config {

    /** @var string $db_password stored the database password */
    private $db_password;

    public function __construct() {

        $this->db_password = require(PROJ_DIR . "config/productions.php");
    }

    /**  @return string 
     */
    public function get_db_password() {
        return $this->db_password;
    }
}

测试代码

<?php

class ConfigTest extends PHPUnit\Framework\TestCase {

    public $config;

    public function test_get_db_password_returns_a_string_or_null() {

        $this->config = new Config;

        // how can I write this test?
        $this->assertInternalType('string || null', $this->config->get_db_password());
    }
}

1 个答案:

答案 0 :(得分:1)

我发现这是一个令人满意的解决方案

$this->assertTrue(is_string($pass) || $pass === null);