0

这是我的原始 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() 时,它说它是空的。我正在尝试验证它是否是一个字符串,以便它可以传入 PHPUnit。有没有办法我可以做到这一点?

4

2 回答 2

3

你正在寻找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);
}
于 2012-09-12T17:32:45.967 回答
1

对贝勒的回答没有异议。要回答这个问题,如所问,你所拥有的也足够好:

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

或者你可以这样做:

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

(后者的好处是,当它失败时,它也会告诉你 ; 的类型,$output只会assertTrue告诉你某事失败了。)

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

于 2012-09-13T00:23:43.130 回答