为具有翻译的WordPress插件编写测试用例

时间:2016-07-08 作者:Maria Daniel Deepak

What is my aim?

我期待着为WordPress插件的可用翻译编写测试用例。

My approach:

我已使用安装WordPressVVV 我的测试套件包括PHPUnitWP-CLI.

为了测试(断言)翻译,我正在检查语言是否.mo 文件是否存在。

/**
 * Test the translations.
 */
public function test_translations() {
    $this->assertFileExists( $this->object->path . \'lang/domain-name-de_DE.mo\' );
    $this->assertFileExists( $this->object->path . \'lang/domain-name-lt_LT.mo\' );
    $this->assertFileExists( $this->object->path . \'lang/domain-name-nl_NL.mo\' );
}

Where I\'m stuck?

这是正确的测试方法吗translations 对于WordPress插件?如果没有,请提出备选方案。

1 个回复
最合适的回答,由SO网友:J.D. 整理而成

如果您只想测试翻译文件的存在,那么这可能是最简单的方法,因为您可能已经在使用PHPUnit对插件代码运行单元/集成测试了。

然而,仅仅检查文件是否存在并不能告诉您多少。它不会告诉你这些语言是否已经被完全翻译,甚至那些文件是否会被WordPress正确加载。

所以你需要问自己的问题是,“为什么我要测试这个?”如果您只是想确保不会意外遗漏翻译文件,那么您的测试应该执行您需要的操作。如果你真的想确保每种语言都有完整的翻译,并且这些翻译确实有效,那就完全不同了。

测试翻译加载要检查WordPress是否可以正确加载每个翻译文件,您可以创建一个PHPUnit测试,使用load_plugin_textdomain(), 并检查它是否返回true, 这表明textdomain可以正确加载。你可能需要加入plugin_locale filter 检查插件附带的每个语言环境。

但是,测试完整性仍然无法告诉您有多少字符串实际被翻译成了该语言,有多少是模糊的,等等。如果您想检查每个翻译是否至少完成了xx%,那么您可能需要使用PHPUnit以外的工具来实现这一点。

测试外观,您还可以进一步检查每个翻译中的字符串是否在插件UI中正确显示。有时,翻译中的字符串可能比原始语言中的字符串长得多,这可能会导致它溢出分配给它的区域。要检查这一点,您需要使用Codeception 验收测试。

结论

因此,总之,你所做的测试是否适合你取决于你想要测试什么。就个人而言,我没有对插件的翻译进行任何测试,尽管最后一部分关于检查UI的内容引起了我的兴趣。就像你现在所做的那样,仅仅检查翻译是否存在,对我来说似乎没有什么好处。这是一个检查,它只与您正在检查的翻译文件列表一样好。从某种意义上说,它实际上并不测试任何东西,只是确保它在那里。这可以在构建脚本而不是PHPUnit中执行。检查翻译是否可以通过WordPress加载确实对IMO有好处,因为它实际上测试翻译是否损坏。当然,它测试它们是否同时存在。所以我可能会扩展您的测试来检查这一点。

编辑相关注释,您还可以考虑测试主POT中的拼写错误(我想也包括翻译中的拼写错误)。这些很容易被忽视。可能有一些shell脚本可以做到这一点。

相关推荐

如何清理wp-content/plugins/wordpress-seo中不必要的文件?

我目前维护Wordpress网站7年。磁盘使用率最近已满,因此我需要定期检查自动备份并保存这些备份,然后将其从服务器中删除。当我检查时,插件文件夹中的wordpress seo文件夹(这是Yoast seo默认插件文件夹)占用了太多空间。据我所知,它充满了各种版本的插件文件。确切地说,它位于wordpress seo插件的js/dist文件夹中。它包含几种类型的小型javascript,每个名称的末尾都有某种序列或版本号,总容量约为250-300 MB。我可以清理这些文件吗?如果是,是否安全?如果我从以前