最合适的回答,由SO网友:J.D. 整理而成
TL;DR: 大多数主题需要的唯一“单元”测试是these.
实际上有一个很好的理由,大多数材料都是关于插件单元测试的。主题确实不是单元测试的好候选对象。主题通常主要关注站点的显示方式,这是您无法真正进行单元测试的。是的,您可以检查主题生成的HTML标记,但测试无法查看主题的显示方式。检查主题是否按您的意愿显示内容是您需要自己手动完成的事情。
当然theme "unit" tests 提及人:@toscho 这对你做这件事很有帮助。但正如他所指出的,它们不是单元测试。它们只提供一些预先编写的内容,让您看到主题如何响应经常会导致意外问题的不同内容。
上述测试适用于所有主题,对大多数主题都足够了。然而,在某些情况下,单元测试对于主题来说仍然是一个好主意。在这种情况下,主题除了显示内容外,还提供其他功能。也就是说,如果你的主题有一些插件式的属性。
现在,请预先警告themes probably shouldn\'t offer plugin-like features 在大多数情况下。有时可能需要它,但当您开始将此类功能打包到主题中时,您应该知道自己在做什么以及为什么要这样做。
假设您可能正在构建一个主题,在这种情况下,主题不仅仅是显示内容,而且您确定需要在主题中使用此功能,而不是插件,那么您想要创建一些单元测试是正确的。在这种情况下,您基本上要做与插件单元测试相同的事情,只是有一个主题。
正如您在研究中可能已经注意到的,有几种不同的方法来进行插件单元测试。有些人希望尽可能保持单元测试的纯粹性,因此他们实际上根本不使用WordPress。(例如,参见,WP Mock.) 我现在更喜欢an approach that is more like integration testing, WordPress的测试套件被用作测试的启动框架。这听起来像是你想要设置的,因为这也是我最熟悉的,这就是我们将重点关注的。
如果您要设置类似于上面链接的我的教程的测试,您可能只需要对专门用于插件的部分进行一些调整。我认为您需要做的主要更改是这一部分:
/**
* The path to the main file of the plugin to test.
*/
define( \'TEST_PLUGIN_FILE\', \'/Users/me/svn/myplguin/myplugin.php\' );
/**
* Manually load the plugin main file.
*
* The plugin won\'t be activated within the test WP environment,
* that\'s why we need to load it manually.
*
* You will also need to perform any installation necessary after
* loading your plugin, since it won\'t be installed.
*/
function _manually_load_plugin() {
require TEST_PLUGIN_FILE;
// Make sure plugin is installed here ...
}
tests_add_filter( \'muplugins_loaded\', \'_manually_load_plugin\' );
您需要加载主题的
functions.php
而不是插件,并且您可能希望选择另一个在
muplugins_loaded
将函数挂接到。(我不是主题专家,所以我不知道WordPress何时加载所有主题依赖项。)
这应该给你一个开始,尽管你可能还需要调整其他一些事情。