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()を使用すると、nullであると表示されました。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 に答える