最合适的回答,由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\' ) );