phpunit 认为两个相等的字符串不相等

标签 php testing encoding phpunit

我正在使用一些代码将 ISO-8859 字符串转换为 utf8。然后我想断言它已正确转换。代码是:

class EncodingTest extends TestCase {

    public function testImapUtf8()
    {
        $pairs = [
            ['=?ISO-8859-13?Q?Darba_s=E2k=F0ana_ar_Gmail?=', 'Darba sākšana ar Gmail'],
            ['Normal text', 'Normal text'], 
            ['Darba sākšana ar Gmail', 'Darba sākšana ar Gmail'],
        ];

        foreach ($pairs as $pair) {
            $this->assertEquals(($pair[1]), (imap_utf8($pair[0])));
        }
    }
}

但是,对于第一对,它给了我一个错误:

1) EncodingTest::testImapUtf8
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'Darba sākšana ar Gmail'
+'Darba sākšana ar Gmail'

字符串看起来一样。我猜有一些看不见的人物。如何测试 imap_utf8 是否按预期工作?

最佳答案

我 var_dumped 这两个变量,发现长度不相等

var_dump(imap_utf8('=?ISO-8859-13?Q?Darba_s=E2k=F0ana_ar_Gmail?='));
var_dump( 'Darba sākšana ar Gmail');

字符串(26)“Darba sākšana ar Gmail”

字符串(24)“Darba sākšana ar Gmail”

您可以使用utf8_decode函数修复长度问题。试试这个

$this->assertEquals(($pair[1]), (utf8_decode(imap_utf8($pair[0]))));

关于phpunit 认为两个相等的字符串不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266826/

相关文章:

Python:将 ascii 转换为 unicode 时遇到困难

python 编码

php - 执行后如何使 cURL 变为 "delete cookies"?

php - 在dockblock中@file标签是什么意思

javascript - 使用 AJAX 调用 php 函数一直失败

testing - 如何使用 Selenium Webdriver 双击一个元素

database - 许多小的 dbunit 数据集还是一个大的数据集?

java - 对集合进行单元测试的最佳方法?

php - 连接到 getstream php 时出错

r - 将特殊字符从 R 导出到 excel/csv