laravle phpunit单元测试登录自动获取token

简介: laravle phpunit单元测试登录自动获取token

路径:tests\TestCase.php

<?php
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;
    public $user;
    public $params;
    public $authHeader;
    /**
     * User login
     * @param array $params
     * @return mixed
     */
    public function userLogin($params = [])
    {
        $params = [
            'username' => '荷逸',
            'password' => '123456',
            'remember' => 'true'
        ];
        $response = $this->post(
            '/api/app/login',
            $params,
            #调用下面拼接token的方法
            $this->headers()
        );
        $users = $response->getOriginalContent();
        return $users;
    }
    /**
     * Setting request header
     * @param null $user
     * @param array $addition
     * @return array
     */
    protected function headers($user = null, $addition = [])
    {
        #添加版本号头部信息
        $headers = ['Accept' => 'application/json', 'apply-secret' => 'base64:szoJ3mSx/5U7zOsJfU7s4pSahiwdh01x6badmz5FtCM='];
        #拼接 token
        if (!is_null($user)) {
            $headers['Authorization'] = 'Bearer ' . $user['message']['access_token'];
        }
        if ($addition) {
            $headers = array_merge($headers, $addition);
        }
        return $headers;
    }
}

路径:tests\Feature\UserTest.php

<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class UserTest extends TestCase
{
    public function setUp(): void
    {
        #每个test方法之前都会调用一次这个方法
        parent::setUp();
        // $this->params = $this->readyApiParams();
        /** Get auth info include token  */
        #调用用户登录的操作
        $user = $this->userLogin();
        $this->user = $user;
        #获取用户 token
        $this->authHeader = $this->headers($user);
    }
   // protected function readyApiParams()
   //{
   //     #这个方法用来放test里需要的参数
   //     $params = [];
   //     $login = [
   //         'username' => '荷逸',
   //         'password' => '123456'
   //   ];
   //     $params['login'] = $login;
   //
   //    return $params;
   // }
//个人中心
     public function testUserIndex()
     {
         $response = $this->json(
             'get',
             'api/app/user',
             [],
             $this->authHeader
         );
         $response->dump()->assertStatus(200);
     }
  }

php artisan test


相关文章
|
7月前
|
存储 安全 测试技术
快速教你如何使用postman工具进行接口测试?(配置全局token、JWT可用)
快速教你如何使用postman工具进行接口测试?(配置全局token、JWT可用)
211 0
使用postman测试接口时需要先登录怎么办
使用postman测试接口时需要先登录怎么办
2034 0
使用postman测试接口时需要先登录怎么办
|
1月前
|
前端开发 Java 测试技术
selenium+python自动化测试--登录
selenium+python自动化测试--登录
21 2
|
1月前
|
SQL 存储 编解码
你会测试 登录 吗?
你会测试 登录 吗?
你会测试 登录 吗?
|
10月前
|
安全 测试技术 数据安全/隐私保护
安全测试----用户同时采用两种校验方法,通过才可以登录成功
安全测试----用户同时采用两种校验方法,通过才可以登录成功
|
11月前
|
IDE Java 测试技术
单元测试PHPUnit入门三板斧
什么,你是程序员?什么你从来没写过单元测试用例?嗯,不要惊讶,这在国内正常的啦。有的觉得写这个玩意太耗时间了,有的干脆就不知道单元测试用例是怎么玩的。说来惭愧,小马也是在CICD的“胁迫”下开始正式涉足。
82 0
单元测试PHPUnit入门三板斧
|
11月前
|
敏捷开发 IDE 测试技术
单元测试PHPUnit初体验之安装与示例
啥?你是程序员没写过单元测试?呃,好吧。小马这次也是需要支持CI/CD才刚开始强制自我实行。
101 0
单元测试PHPUnit初体验之安装与示例
|
12月前
|
存储 安全 JavaScript
npm 账户的创建、测试、登录
npm 账户的创建、测试、登录