【发布时间】:2019-11-01 12:12:30
【问题描述】:
Mockery 文档有用于模拟类及其成员的示例,但我没有看到任何模拟包含函数的详细信息。我想模拟由/wp-includes/functions.php 引入的wp_send_json() 的实现。可以使用 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() 如何被模拟/覆盖以进行测试?
【问题讨论】:
标签: php unit-testing