Mockery 文档有模拟类及其成员的示例,但我没有看到任何有关模拟包含函数的详细信息。我想模拟wp_send_json()由/wp-includes/functions.php. 可以使用 Mockery 或任何其他 php 库。这是 的用法wp_send_json()。覆盖此函数将允许我对输入值运行 json_encode() ,然后将其返回以进行干净的单元测试:function handleAjax() { $name = $_POST['name']; return wp_send_json($name);}在我的测试套件中,我这样称呼它:use \Symfony\Component\HttpFoundation\Request;class UtilitiesTest extends \Codeception\TestCase\WpTestCase { _before() { } testHandleAjax() { $request = Request::create( null, 'POST', ['name' => 'John'] ); $request->overrideGlobals(); // $_POST is now mocked $result = handleAjax(); $this->assertEquals('John', $result); }}如何wp_send_json()模拟/覆盖无类函数以进行测试?
1 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
使用php-mock可以模拟全局函数。
例子
composer require --dev php-mock/php-mock
namespace Test;
use phpmock\MockBuilder;
$builder = new MockBuilder();
$builder->setNamespace(__NAMESPACE__)
->setName('wp_send_json')
->setFunction(
function ($response) {
// echo json_encode($response);
}
);
$mock = $builder->build();
$mock->enable();
wp_send_json(['success' => true]);
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消