为了账号安全,请及时绑定邮箱和手机立即绑定

Php 在类之外模拟一个函数

Php 在类之外模拟一个函数

PHP
萧十郎 2021-08-28 10:18:54
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]);


查看完整回答
反对 回复 2021-08-28
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信