Mocking WordPress Objects
An example with WPDB
WPDBnamespace MyPlugin;
class MyClass
{
public function getSomePostIds() : array
{
global $wpdb;
return $wpdb->get_col("SELECT ID FROM {$wpdb->posts} LIMIT 3");
}
}use Mockery;
use MyPlugin\MyClass;
final class MyClassTest extends \WP_Mock\Tools\TestCase
{
public function testCanGetSomePostIds() : void
{
global $wpdb;
$wpdb = Mockery::mock('WPDB');
$wpdb->posts = 'wp_posts';
$wpdb->allows('get_col')
->once()
->with('SELECT ID FROM wp_posts LIMIT 3')
->andReturn([1, 2, 3]);
$postIds = (new MyClass())->getSomePostIds();
$this->assertEquals([1, 2, 3], $postIds);
}
}Last updated