如何在PHPUnit中验证此函数是否为字符串


How do I verify that this function is a string in PHPUnit?

以下是我原始PHP代码的代码:

public function outputText() {   
    $i = 1;   
    foreach($this->sorted_data as $this->data) {   
        echo "$i. ".$this->data[0]."<br/>";   
        $i++;  
    }  
}

这是PHPUnit的代码:

public function testVerify() {
    $yn = new SortThisData();
    $yn->readFile("input.txt");
    $output = $yn->outputText();
    $this->assertTrue(is_string($output));
    //if(!is_string($yn->get()))
    //    return false;
    //$this->assertNotEmpty($yn->get());
    }

该类在原始PHP文件中称为SortThisData。当我使用gettype()时,它说它为null。我正在尝试验证它是否是一个字符串,以便它可以在PHPUnit中传递。有什么办法我能做到这一点吗?

您正在寻找assertInternalType()

更新:我没有意识到你在回显输出。您可能需要使用输出缓冲来捕获文本。

public function testVerify() {
    $yn = new SortThisData();
    $yn->readFile("input.txt");
    // start output buffering and capture the output
    ob_start();
    $yn->outputText();
    $output = ob_get_clean();
    $this->assertInternalType('string', $output);
}

不同意贝勒的回答。为了回答这个问题,正如所问的,你所拥有的也足够好:

$this->assertTrue(is_string($output));

或者你可以这样做:

$this->assertEquals('string',gettype($output));

(后者的优点是,当它失败时,它还会告诉你$output的类型;assertTrue只会告诉你某个东西失败了。)

assertInternalType()正是这样做的,但它只是在PHPUnit 3.5中引入的,您仍然会发现PHPUnit 3.4在一些机器上使用。