小编Psy*_*oMo的帖子

PHPUnit - 断言两个字符串相等失败

我有一个单元测试,我试图测试NumberFormatter.

\n\n

我的代码的简化版本是:

\n\n
public function testGetFormattedPrice()\n{\n    $formatter = NumberFormatter::create(\n        "de_DE",\n        NumbererFormatter::CURRENCY\n    );\n\n    $this->assertEquals(\n        \'16,66 \xe2\x82\xac\',\n        $formatter->formatCurrency(16.66, "EUR")\n    );\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会导致失败:

\n\n
Failed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-\'16,66 \xe2\x82\xac\'\n+\'16,66 \xe2\x82\xac\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

我假设这与欧元符号(可能是字符编码)或字符串中的某种隐藏字节有关,但不太确定如何检查这一点?

\n\n

谁能给我一些关于如何调试这个问题的建议,或者可能的原因是什么?

\n\n

干杯,

\n\n

\n

php phpunit unit-testing

6
推荐指数
1
解决办法
9084
查看次数

Silverstripe table_name未设置为类

我刚刚学习SilverStripe,实际上我遇到了silverstripe网站课程的问题.

我有这门课:

namespace SilverStripe\Lessons;

use Page;

class ArticlePage extends Page
{
    private static $can_be_root = false;
    private static $db = [
        'Date' => 'Date',
        'Teaser' => 'Text',
        'Author' => 'Varchar(255)',
    ];

//    public function getCMSFields(){
//        $fields = parent::getCMSFields();
//        $fields = addFieldToTab();
//        return $fields;
//    }

}
Run Code Online (Sandbox Code Playgroud)

现在当我/ dev/build我在构建页面上得到这个反馈: 在此输入图像描述

所以我接下来做的是实际注释掉$ db数组的声明.然后我从dev/build获得了这个反馈:

在此输入图像描述

所以我不确定的一些事情.dev/build的第一个输出中的红色注释表明您应该为所有命名空间模型定义table_name.它确实没有声明我有一个未定义的table_name.但是它下面的下一个注释表示没有为类SilverStripe\Lessons\ArticlePage设置table_name.那么定义一个table_name并在这些消息的上下文中"设置"table_name是一回事吗?

此外,第二个输出表明为SilverStripe\Lessons\ArticlePage定义了table_name事实上每个table_name都附加了"2",这是我在开始这篇文章之前进行实验的结果.即,一旦我看到这种行为,我重复实验尝试重现行为,因此创建和删除了更多的表,因此他们的名字必须递增.那么为什么没有设置ArticlePage table_name?有人可以帮我解决这个问题吗?戴夫.

php silverstripe silverstripe-4

5
推荐指数
1
解决办法
479
查看次数