TestCase.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. use Illuminate\Support\Facades\DB;
  3. abstract class TestCase extends Laravel\Lumen\Testing\TestCase
  4. {
  5. protected $token = '';
  6. protected $username = 'william.y@matchpages.com';
  7. protected $password = 'Mm123654!';
  8. /**
  9. * Creates the application.
  10. *
  11. * @return \Laravel\Lumen\Application
  12. */
  13. public function createApplication()
  14. {
  15. return require __DIR__.'/../bootstrap/app.php';
  16. }
  17. /**
  18. * 测试模拟请求
  19. * @param string $method
  20. * @param string $url
  21. * @param array $params
  22. */
  23. public function request(string $method,string $url,array $params=[]){
  24. print_r(PHP_EOL.PHP_EOL.json_encode($params,JSON_UNESCAPED_UNICODE).PHP_EOL);
  25. $token=empty($this->token)?$this->getToken():$this->token;
  26. // $token=$this->getToken();
  27. $headers = [
  28. 'X-Requested-With'=>'XMLHttpRequest',
  29. 'Content-Type' => 'application/x-www-form-urlencoded',
  30. 'token' => $token // AuthCheck的时候会进行刷新赋值
  31. ];
  32. $server = $this->transformHeadersToServerVars($headers);
  33. $response = $this->call($method,$url,$params,[], [], $server);
  34. print_r('HTTP状态码:'.$response->getStatusCode().PHP_EOL);
  35. print_r('返回值:'.PHP_EOL);
  36. $data = json_decode($response->getContent(),true);
  37. print_r($data);
  38. // $this->assertEquals(0,$data['ret']??-1);
  39. echo PHP_EOL.PHP_EOL.json_encode($data,JSON_UNESCAPED_UNICODE);
  40. return $data;
  41. }
  42. protected function getToken(){
  43. $response = $this->call('post','/api/admin/user/admin-login',['user_name'=>$this->username,'password'=>$this->password]);
  44. if($response->getStatusCode()!=200){
  45. echo '登录失败';exit;
  46. }
  47. $data = json_decode($response->getContent(),true);
  48. if(!isset($data['code'])||isset($data['code']) && $data['code']!=0){
  49. print_r($data);
  50. exit;
  51. }
  52. print_r($data);
  53. return $data['data']['token'];
  54. }
  55. /**
  56. * 覆盖setUp方法 添加对sql查询监听
  57. */
  58. public function setUp(): void
  59. {
  60. parent::setUp(); // TODO: Change the autogenerated stub
  61. DB::listen(function($query){
  62. $params = $query->bindings;
  63. $parttern = [];
  64. foreach($params as $key=>$value){
  65. $params[$key] = "'".str_replace('\'','\\\'',$value)."'";
  66. $parttern[] = '/(\?)/';
  67. }
  68. print_r(preg_replace($parttern,$params,$query->sql,1).';'.PHP_EOL);
  69. });
  70. }
  71. }