Heim > Backend-Entwicklung > PHP-Tutorial > laravel - PHP开发API时怎么样模拟数据?

laravel - PHP开发API时怎么样模拟数据?

WBOY
Freigeben: 2016-06-06 20:39:23
Original
1021 Leute haben es durchsucht

API的数据怎样模拟?不是很理解````

回复内容:

API的数据怎样模拟?不是很理解````

其实每次请求的区别就是$_GET、$_POST、$_COOKIE、$_SERVER这些环境数据在发生改变,所以只要改变这些环境数据再执行Controller就能够模拟请求了

我用单元测试的方式来实现,代码大概就是下面这个样子,其实每次模拟请求就是通过router去执行controller类的不同方法而已

还可以使用phpunit --process-isolation参数把每次测试放到单独的php进程里执行,避免某些代码逻辑反复执行导致的状态污染问题

<code>PHP</code><code>    /**
     * @example
     * $this->execute(array(
     *     'path' => '/foo/bar',
     *     'method' => 'GET',
     *     'get' => array(),
     *     'post' => array(),
     *     'headers' => array(
     *         'Content-Type' => 'text/html'
     *     ),
     * ));
     */
    protected function execute(array $options) {
        if (!isset($options['path'])) {
            $options['path'] = $this->path;
        }

        $_SERVER = array();
        $_GET = $_POST = array();

        $_SERVER['REQUEST_URI'] = isset($options['path']) ? $options['path'] : '/';

        $method = isset($options['method']) ? strtoupper($options['method']) : 'GET';
        $_SERVER['REQUEST_METHOD'] = $method;

        if (isset($options['get'])) {
            $_GET = $options['get'];
        }

        if (isset($options['post'])) {
            $_POST = $options['post'];
        }

        $headers = isset($options['headers']) ? $options['headers'] : array();
        foreach ($headers as $key => $value) {
            $key = 'HTTP_'.strtoupper(str_replace('-', '_', $key));
            $_SERVER[$key] = $value;
        }

        return $this->router->execute();
    }
</code>
Nach dem Login kopieren

推荐一个 Chrome 扩展:Postman。

firebox,chrome浏览器有很多form表单提交工具,安装一个就好了

请求数据模拟,直接请求即可,如果使用工具,尝试谷歌浏览器的post-man扩展,可以模拟各种请求和数据,包括post,get,put等等

听说过单元测试PHPUnit么?这个不但可以做单元测试,模拟API请求也是可以的,主要是要自己写下Post或Get请求

web调试利器,Fiddler2

直接写curl post数据,灵活有方便

phpunit
codeception
selenium

自己用 guzzle 写

在chrome上装个插件 postman

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage