最合适的回答,由SO网友:J.D. 整理而成
单元测试转换所有CREATE TABLE 和DROP TABLE 查询到CREATE TEMPORARY TABLE 和DROP TEMPORARY TALBE, 分别地所以在你的tearDown 查询将尝试删除具有这些名称的临时表,但不会删除实际的表。要解决此问题,请在DROP 查询:
remove_filter( \'query\', array( $this, \'_drop_temporary_tables\' ) );
您可能还需要在
CREATE TABLE 查询:
remove_filter( \'dbdelta_create_queries\', array( $this, \'_create_temporary_tables\' ) );
The
WP_UnitTestCase::_create_temporary_tables() 函数是过滤查询以使表成为临时表的函数。它添加在
setUp(), 并在
tearDown().
更新:
_create_temporary_tables() 函数现在连接到
\'query\' 过滤器,而不是
\'dbdelta_create_queries\'. 看见
changeset 27041. 因此,现在要删除它,请执行以下操作:
remove_filter( \'query\', array( $this, \'_create_temporary_tables\' ) );