|
- <?php
- /**
- * Created by PhpStorm.
- * User: zhengmingwei
- * Date: 2020/5/3
- * Time: 9:03 PM
- */
-
-
- namespace addons\unishop\extend;
-
-
- use addons\unishop\controller\User;
- use think\Config;
- use think\exception\HttpResponseException;
- use think\Request;
- use think\Response;
-
- trait PhpunitFunctionCustomize
- {
- /**
- * 测试账户
- * @var string
- */
- static $username = 'unishop';
- static $mobile = '11111511115';
- static $password = '123456';
-
- /**
- * 短信动作
- * @var string
- */
- static $smsCode = '1111';
- protected $eventRegister = 'register'; // 注册
- protected $eventReserpwd = 'resetpwd'; // 重置密码
-
- /**
- * 访问本地接口
- * @param $class
- * @param string $action
- * @return array
- */
- public function request($class, $action = 'index', $params = [], $method = 'POST')
- {
- $data = [];
- if (!empty($class)) {
- $header = $get = $post = [];
-
- if (!empty($params['header'])) {
- $header = $params['header'];
- unset($params['header']);
- }
-
- $method = strtolower($method);
- $params['millisecond'] = 0;
- switch ($method) {
- case 'get':
- $get = $params;
- break;
- case 'post':
- $post = $params;
- break;
- }
-
- try {
- $data = [];
- Request::destroy();
- $controller = strtolower(substr($class, strrpos($class, '\\') + 1));
- $request = Request::instance([
- 'route' => [
- 'addon' => 'unishop',
- 'controller' => $controller,
- 'action' => $action
- ],
- 'controller' => $controller,
- 'action' => $action,
- 'get' => $get,
- 'post' => $post,
- 'request' => $params,
- 'header' => $header
- ]);
- $obj = new $class($request);
- $obj->$action();
- } catch (HttpResponseException $e) {
- $data = $e->getResponse();
- }
- }
-
- // 输出数据到客户端
- if ($data instanceof Response) {
- $response = $data;
- } elseif (!is_null($data)) {
- // 默认自动识别响应输出类型
- $type = $request->isAjax() ?
- Config::get('default_ajax_return') :
- Config::get('default_return_type');
-
- $response = Response::create($data, $type);
- } else {
- $response = Response::create();
- }
-
- return $response->getData();
- }
-
- /**
- * 模拟用户登录
- */
- public function userLogin()
- {
- $contents = $this->request(User::class, 'login',[
- 'mobile' => self::$mobile,
- 'password' => self::$password
- ]);
-
- if ($contents['code'] == 0) {
- // 模拟发送短信
- \app\common\model\Sms::create(['event' => $this->eventRegister, 'mobile' => self::$mobile, 'code' => self::$smsCode, 'ip' => 'phpunit', 'createtime' => time()]);
-
- $this->request(User::class, 'register', [
- 'captcha' => self::$smsCode,
- 'mobile' => self::$mobile,
- 'password' => self::$password,
- 'username' => self::$username
- ]);
- $contents = $this->request(User::class, 'login',[
- 'mobile' => self::$mobile,
- 'password' => self::$password
- ]);
- }
- return $contents;
- }
-
-
- }
|