如何在没有命名空间的情况下使用嘲弄来模拟全局class?
How to use mockery to mock global class without namespace?
我想测试调用此函数的 WordPress 应用程序 https://github.com/Automattic/WPCOM-Related-Posts/blob/master/wpcom-related-posts.php
我不确定如何模拟它,因为 WPCom_Related_Posts 没有命名空间。
我就是这样使用 class
$related_posts = WPCom_Related_Posts()->get_related_posts( get_queried_object_id(), $args );
我应该如何在测试中模拟这个 get_related_posts
因为这个 class 会调用 Elasticsearch 来获取相关的帖子,我不想在 PHPUnit
中设置它
这很简单:就像你嘲笑其他人一样class:
$mock = Mockery::mock('WPCom_Related_Posts');
//or, if you want to be explicit:
$mocl = Mockery::mock('\WPCom_Related_Posts');
第一页有很多documentation along with examples,例如:
$mock = \Mockery::mock('stdClass');
这应该已经回答了你的问题(stdClass
也没有命名空间(好吧,它在全局 NS 中)。
不要忘记在每个测试结束时 运行 \Mockery::close();
,尽管(在 tearDown
或 _after
中,或者在测试中调用的任何内容您正在使用的框架)。特别是当你开始使用 expectations
我想测试调用此函数的 WordPress 应用程序 https://github.com/Automattic/WPCOM-Related-Posts/blob/master/wpcom-related-posts.php
我不确定如何模拟它,因为 WPCom_Related_Posts 没有命名空间。
我就是这样使用 class
$related_posts = WPCom_Related_Posts()->get_related_posts( get_queried_object_id(), $args );
我应该如何在测试中模拟这个 get_related_posts
因为这个 class 会调用 Elasticsearch 来获取相关的帖子,我不想在 PHPUnit
这很简单:就像你嘲笑其他人一样class:
$mock = Mockery::mock('WPCom_Related_Posts');
//or, if you want to be explicit:
$mocl = Mockery::mock('\WPCom_Related_Posts');
第一页有很多documentation along with examples,例如:
$mock = \Mockery::mock('stdClass');
这应该已经回答了你的问题(stdClass
也没有命名空间(好吧,它在全局 NS 中)。
不要忘记在每个测试结束时 运行 \Mockery::close();
,尽管(在 tearDown
或 _after
中,或者在测试中调用的任何内容您正在使用的框架)。特别是当你开始使用 expectations