SO网友:J.D.
Should you test this? 对
How should you test this? 那要看情况而定。
有几种不同的方法可以对WordPress插件进行单元测试。这个one that I prefer and am most familiar with is more like integration testing. 我无法从你的帖子中判断你是否在使用这种方法,但无论如何,我会从这个角度回答。
对于我自己的插件,我创建了a base testcase that will help you do this. 它让您可以测试安装和卸载,并提供一些您可能会发现有用的自定义断言。
自述文件:
这个测试用例的目的是允许您尽可能真实地进行插件卸载测试。WordPress在插件处于非活动状态时卸载插件,这些工具允许您进行模拟。安装是远程执行的,因此在运行测试时不会加载插件。
在发现我的插件卸载脚本中有一个致命错误后,我创建了这些工具。并不是说我没有卸载单元测试。我做到了。但是卸载测试是在插件已经加载的情况下运行的。所以我从来没有意识到我在调用插件的一个函数,而这些函数通常是不可用的。那时候我决定创建这些测试工具,所以如果我没有在插件的卸载脚本中包含所有必需的依赖项,我的卸载测试就会失败。
除了提供真实的卸载测试环境外,它还提供了一些断言,以帮助您确保插件完全清理了数据库。
示例测试用例的一部分,也来自自述:
/**
* Test installation and uninstallation.
*/
public function test_uninstall() {
/*
* First test that the plugin installed itself properly.
*/
// Check that a database table was added.
$this->assertTableExists( $wpdb->prefix . \'myplugin_table\' );
// Check that an option was added to the database.
$this->assertEquals( \'default\', get_option( \'myplugin_option\' ) );
/*
* Now, test that it uninstalls itself properly.
*/
// You must call this to perform uninstallation.
$this->uninstall();
// Check that the table was deleted.
$this->assertTableNotExists( $wpdb->prefix . \'myplugin_table\' );
// Check that all options with a prefix was deleted.
$this->assertNoOptionsWithPrefix( \'myplugin\' );
// Same for usermeta and comment meta.
$this->assertNoUserMetaWithPrefix( \'myplugin\' );
$this->assertNoCommentMetaWithPrefix( \'myplugin\' );
}
Edit (2015年1月22日星期四下午3:28):
即使您不想全力以赴完全采用这种方法,您可能仍然可以从中找到一些有用的信息,让您了解测试表创建等所需的内容。