测试CakePHP3RESTAPI

测试CakePHP3RESTAPI,api,testing,cakephp-3.0,jwt,Api,Testing,Cakephp 3.0,Jwt,我正在使用CRUD插件和ADmad的JWT插件在CakePHP3上开发一个API。我通过导入模式,然后定义一些虚拟记录,为所有表创建了fixture。现在我想知道测试API的最佳方法 即: 如何在测试中设置授权用户 如何在测试框架中调用API方法 目前我没有任何代码可显示,因为我真的不知道如何以正确的方式进行此操作。我看到的测试API端点的一种方法是使用IntegrationTestCase套件的post()方法。一个非常基本的例子: public function testLogin() {

我正在使用CRUD插件和ADmad的JWT插件在CakePHP3上开发一个API。我通过导入模式,然后定义一些虚拟记录,为所有表创建了fixture。现在我想知道测试API的最佳方法

即:

  • 如何在测试中设置授权用户
  • 如何在测试框架中调用API方法

  • 目前我没有任何代码可显示,因为我真的不知道如何以正确的方式进行此操作。

    我看到的测试API端点的一种方法是使用IntegrationTestCase套件的
    post()
    方法。一个非常基本的例子:

    public function testLogin()
    {
        // You can add this to the setUp() function to make it global
        $this->configRequest([
            'headers' => [
                'Accept' => 'application/json',
                'Content-Type' => 'x-www-form-urlencoded'
            ]
        ]);
    
        $this->post('/auth/token', ['username' => $username, 'password' => $password]);
        $this->assertResponseOk();
        $this->assertResponseContains('access_token');
    }
    
    存储该访问令牌(或预生成令牌)&使用该令牌设置授权头

    您可以这样发送授权令牌(在每次请求之前):

    提示:您可以
    配置::write()
    测试的
    bootstrap.php
    中的
    Security.salt
    值-这样密码salt工作!我还发现在您的设备中保存salt密码值很有帮助


    更多详细信息,请参见。

    如何在测试中存储令牌?
    $this->configRequest([
            'headers' => [
                'Accept' => 'application/json',
                'Content-Type' => 'x-www-form-urlencoded',
                'Authorization' => 'Bearer ' . $token
            ]
        ]);