PHPUnit-断言两个字符串相等失败
我有一个单元测试,试图测试PHPUnit-断言两个字符串相等失败,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我有一个单元测试,试图测试NumberFormatter的输出 我的代码的简化版本是: public function testGetFormattedPrice() { $formatter = NumberFormatter::create( "de_DE", NumbererFormatter::CURRENCY ); $this->assertEquals( '16,66 €', $forma
NumberFormatter
的输出
我的代码的简化版本是:
public function testGetFormattedPrice()
{
$formatter = NumberFormatter::create(
"de_DE",
NumbererFormatter::CURRENCY
);
$this->assertEquals(
'16,66 €',
$formatter->formatCurrency(16.66, "EUR")
);
}
这将导致故障:
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'16,66 €'
+'16,66 €'
我假设这与欧元符号(可能是字符编码)或字符串中的某种隐藏字节有关,但不确定如何检查
谁能给我一些关于如何调试这个问题的建议,或者可能的原因是什么
干杯
Mo因此我找到了一个答案,看起来像是
NumberFormatter
在它的输出中添加了一个不间断的空格(这对于货币来说是有意义的),更多信息如下:
基于此,我提出了一个解决方案:
非常感谢,我遇到了这个问题,你刚刚解决了
public function testGetFormattedPrice()
{
$formatter = NumberFormatter::create(
"de_DE",
NumbererFormatter::CURRENCY
);
$format = str_replace("\xc2\xa0", ' ', $formatter->formatCurrency(16.66, "EUR"));
$this->assertEquals('16,66 €', $format);
}