🗺️我的环境
PHP | 7.4 |
WordPress | 6.2 |
WP_Mock | 1.0 |
PHP单元 | 11.6.9 |
嘲讽 | 1.6.6 |
🖥️代码:测试用例
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);
}
}
🖥️代码:
database_service->migrate()
的行问题
$prefix = $wpdb->prefix;
🚩问题与期待
运行测试后,我收到以下警告:
PHP Notice: Undefined property: Mockery_1__WPDB::$prefix in ...
并且当前测试由于未知原因而成功。可能 Mockery 默认返回空字符串🤔(如果有人得到答案)
有谁知道如何使用 WP_Mock 和/或 Mockery 模拟/模拟特定属性(静态和非静态)?
我需要知道避免此类警告的最佳方法。 预先感谢您的宝贵时间❤️
我只是错过了测试中的下面一行..
global $wpdb;