What is my aim?
我期待着为WordPress插件的可用翻译编写测试用例。
My approach:
我已使用安装WordPress
VVV 我的测试套件包括
PHPUnit 和
WP-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插件?如果没有,请提出备选方案。
最合适的回答,由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脚本可以做到这一点。