質問: wp_insert_user(array('user_login' => 'test2')); } function teardown() { global $wpdb; /* these lines don't work for some reason */ $wpdb->query('drop table if exists ' . $wpdb->prefix . 'gfdl_bullets;'); $wpdb->query('drop table if exists ' . $wpdb->prefix . 'gfdl_character_ai;'); $wpdb->query('drop table if exists ' . $wpdb->prefix . 'gfdl_items;'); $wpdb->query('drop table if exists ' . $wpdb->prefix . 'gfdl_sprites;'); $wpdb->query('drop table if exists ' . $wpdb->prefix . 'gfdl_backgrounds;'); wp_delete_user($this->users[0]); wp_delete_user($this->users[1]); parent::teardown(); } function testdatalayer() { $this->asserttrue(class_exists( 'gfdatalayer')); } function testversion() { $this->assertequals('0.11', get_option('gfdl_version')); } } ティアダウン機能は実行されているように見えますが、ドロップテーブルは機能していません(ユニットテストが終了した後も残ります)。私の最初の考えはテストが非同期的に実行されていたことですが、私のデバッグはそうでないことを示唆しています。(データベースの変更に関して)プラグインのアップグレードを処理するためのより良い方法はありますか、それとも私が見逃しているものがありますか?
回答: 手動でsqlステートメントを実行しようとしましたか?おそらく、テーブルdropコマンドの実行を妨げるエラーメッセージが表示されるでしょう(不十分な権限など)。通常、sqlテーブルの作成は activationフック に行われ、sqlテーブルは deactivationフック にドロップされます。そして、はい、wpは メカニズム を持ち、プラグインのバージョン番号に基づいて自動的にテーブル構造を更新します。