ESCAPE(\ 033)などの非印字文字列を出力するコードを記述しています。私は、エスケープ文字なしのPHPUnit expectOutputStringを使用して、それが失敗した場合、それは読みやすい:PHPUnit ExpectOutputStringエラーで読みにくいバイナリ出力が表示される
public function test_output() {
echo "foo";
$this->expectOutputString("foob");
}
これは失敗し、私が表示されます:
Failed asserting that two strings are equal.
Expected :'foob'
Actual :'foo'
デバッグが容易な、しかし、私が持っているときエスケープ文字が含ま列:
public function test_escape_output() {
echo "\033[0m";
$this->expectOutputString("\033[0mm");
}
を...そして、それが失敗したが、それは私にバイナリ出力を示しています
Failed asserting that two strings are equal.
Expected :Binary String: 0x1b5b306d6d
Actual :Binary String: 0x1b5b306d
文字列が複雑で長くなるようになると、デバッグは難しくなります。
これは、PhpStormへの最近のアップグレードの1つで変更されたようですが、現在は2016.1.2を実行中です。以前は、エラーが表示された場合、エスケープシーケンスを隠すだけで、残りの文字を標準出力に表示するので、 "\ 033 [0m"の場合は "。[0m"(または実際には私が持っている正方形のような文字です)。 "とにかく、私は印刷可能な文字にほとんど興味があったので、デバッグがはるかに簡単でした。この区別が描かれている理由私も明確ではないよ。違ったことを表示する、またはPhpStorm。HELP!
'エコーパック使用してみてください( "H *" と、 "\ 033 [0メートル")' test_escape_output' – CarlosCarucce
@CarlosCarucce 'で - 提案のためのおかげで、残念ながら、PHPUnitのがで応答:)パック(:タイプH :私がエスケープ文字を参照していると思う不正な16進数 – Katie