簡體   English   中英

PHPUnit - 斷言兩個字符串相等失敗

[英]PHPUnit - Failed asserting two strings are equal

我有一個單元測試,我試圖在其中測試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 €'

我假設這與歐元符號(可能是字符編碼)或字符串中的某種隱藏字節有關,但不確定如何檢查?

誰能給我一些關於如何調試這個問題的建議,或者可能的原因是什么?

干杯,

所以我找到了一個答案,看起來NumberFormatter為它的輸出添加了一個不間斷的空間(這對貨幣有意義),更多信息在這里: https : //www.php.net/manual/en/numberformatter.formatcurrency.php# 118304

我能夠提出一個基於此的解決方案: https : //stackoverflow.com/a/40724830/4161644

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM