wordpress 如何使用WP_Mock和Mockery来模拟$wpdb->前缀?

h9vpoimq  于 12个月前  发布在  WordPress
关注(0)|答案(1)|浏览(85)

🗺️我的环境
| | |
| --|--|
| PHP| 7.4|
| WordPress| 6.2|
| WP_模拟|1.0|
| PHPUnit| 9.6.11|
| 嘲弄|1.6.6|
验证码:TestCase

use PHPUnit\Framework\TestCase;
use WP_Mock;
use Mockery;

class WPAB_Database_Service_Test extends TestCase
{
  /**
   * @test
   */
  public function migrate()
  {
    // ... some code ...

    $wpdb_mock = Mockery::mock('WPDB');

    $wpdb_mock
      ->allows('get_charset_collate')
      ->withNoArgs()
      ->andReturn('utf16_general_ci');

    $wpdb_mock->prefix = 'wpbb_';

    $result = $database_service->migrate(); // The function I want test

    $this->assertSame($result, 1);
  }
}

验证码:Row issue of database_service->migrate()

$prefix = $wpdb->prefix;

🚩问题与展望
运行测试后,我有以下警告:
PHP Notice: Undefined property: Mockery_1__WPDB::$prefix in ...
目前的测试成功了,原因不明。Mockery默认返回空字符串🤔(如果有人得到了答案)

有人知道如何使用WP_Mock和/或Mockery模拟/模拟特定属性(静态和非静态)吗?

我需要知道避免这种警告的最佳方法。提前感谢您的时间️

6yt4nkrj

6yt4nkrj1#

我只是在我的测试中错过了下面的一行。

global $wpdb;

相关问题