测试等于命令输出时,assertEqual 不起作用
assertEqual not works when testing equals of command output
这是我在命令中输出的内容:
$output->writeln("3[37;42m Translations from " . $input->getArgument('bundle') . " imported successfully! 3[0m");
这是我在命令行中使用 trim 函数删除空格得到的结果:
trim($commandTester->getDisplay())
..string(69) " Translations from AcmeDemoBundle imported successfully! "
但是当我 运行 这个:
$this->assertEquals(" Translations from AcmeDemoBundle imported successfully! ", trim($commandTester->getDisplay()));
我得到:
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-' Translations from AcmeDemoBundle imported successfully! '
+Binary String: ...
我做错了什么?
这是预期的行为,因为输出中的字符串是:
"3[37;42m Translations from AcmeDemoBundle imported successfully! 3[0m"
在字符串的开头和结尾有特殊字符,但它们不是trim函数删除的特殊字符,所以,你的真正比较是在上面的字符串和:
" Translations from AcmeDemoBundle imported successfully! "
哪些是不同的字符串,虽然在输出中看不到特殊字符。
您可以在指定 trim 函数的第二个属性的字符串中添加要删除的字符。您可以在此处查看规范:
这是我在命令中输出的内容:
$output->writeln("3[37;42m Translations from " . $input->getArgument('bundle') . " imported successfully! 3[0m");
这是我在命令行中使用 trim 函数删除空格得到的结果:
trim($commandTester->getDisplay())
..string(69) " Translations from AcmeDemoBundle imported successfully! "
但是当我 运行 这个:
$this->assertEquals(" Translations from AcmeDemoBundle imported successfully! ", trim($commandTester->getDisplay()));
我得到:
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-' Translations from AcmeDemoBundle imported successfully! '
+Binary String: ...
我做错了什么?
这是预期的行为,因为输出中的字符串是:
"3[37;42m Translations from AcmeDemoBundle imported successfully! 3[0m"
在字符串的开头和结尾有特殊字符,但它们不是trim函数删除的特殊字符,所以,你的真正比较是在上面的字符串和:
" Translations from AcmeDemoBundle imported successfully! "
哪些是不同的字符串,虽然在输出中看不到特殊字符。
您可以在指定 trim 函数的第二个属性的字符串中添加要删除的字符。您可以在此处查看规范: