成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > PHPUnit + Laravel單元測試常用技能

PHPUnit + Laravel單元測試常用技能

熱門標(biāo)簽:江西電銷機器人收費 高德地圖標(biāo)注店鋪收費嗎 泊頭在哪里辦理400電話 天潤融通外呼系統(tǒng)好嗎 江門回?fù)芡夂粝到y(tǒng) 高德地圖標(biāo)注位置怎么標(biāo)注 杭州語音電銷機器人 電銷機器人沒有效果怎么樣 欣思維地圖標(biāo)注

1. 數(shù)據(jù)供給器

用來提供參數(shù)和結(jié)果,使用 @dataProvider 標(biāo)注來指定使用哪個數(shù)據(jù)供給器方法。例如檢測app升級數(shù)據(jù)是否符合預(yù)期,addProviderAppUpdateData()提供測試的參數(shù)和結(jié)果。testAppUpdateData()檢測appUpdateData()返回的結(jié)果是否和給定的預(yù)期結(jié)果相等,即如果$appId='apple_3.3.2_117', $result=['status' => 0, 'isIOS' => false], 則$data中如果含有['status' => 0, 'isIOS' => false], 則斷言成功。建議在數(shù)據(jù)提供器,逐個用字符串鍵名對其命名,這樣在斷言失敗的時候?qū)⑤敵鍪〉拿Q,更容易定位問題。

示例代碼:

?php
  namespace Tests\Unit;

  use App\Services\ClientService;
  use Tests\TestCase;

  class ClientServiceTest extends TestCase
  {
    /**
     * @dataProvider addProviderAppUpdateData
     *
     * @param $appId
     * @param $result
     */
    public function testAppUpdateData($appId, $result)
    {
      $data = (new ClientService($appId))->appUpdateData();

      $this->assertTrue(count(array_intersect_assoc($data, $result)) == count($result));
    }

    public function addProviderAppUpdateData()
    {
      return [
        'null'         => [null, ['status' => 0, 'isIOS' => false, 'latest_version' => 'V']],
        'error app id'     => ['sdas123123', ['status' => 0, 'isIOS' => false, 'latest_version' => 'V']],
        'android force update' => ['bx7_3.3.5_120', ['status' => 0, 'isIOS' => false]],
        'ios force update'   => ['apple_3.3.2_117', ['status' => 1, 'isIOS' => true]],
        'android soft update' => ['sanxing_3.3.2_117', ['status' => 2, 'isIOS' => false]],
        'ios soft update'   => ['apple_3.3.3_118', ['status' => 2, 'isIOS' => true]],
        'android normal'    => ['fhqd_3.3.6_121', ['status' => 1, 'isIOS' => false]],
        'ios normal'      => ['apple_3.3.5_120', ['status' => 1, 'isIOS' => true]],
        'h5'          => ['h5_3.3.3', ['status' => 1, 'isIOS' => false]]
      ];
    }
  }

斷言成功結(jié)果:

2. 斷言方法

常用有assertTrue(), assertFalse(), assertNull(), assertEquals(), assertThat()。

assertThat()自定義斷言。常用的約束有isNull()、isTrue()、isFalse()、isInstanceOf();常用的組合約束logicalOr()、logicalAnd()。例如檢測返回的結(jié)果是否是null或ApiApp類。

示例代碼:

?php
  namespace Tests\Unit;

  use App\Models\ApiApp;
  use App\Services\SystemConfigService;
  use Tests\TestCase;

  class SystemConfigServiceTest extends TestCase
  {
    /**
     * @dataProvider additionProviderGetLatestUpdateAppApi
     *
     * @param $appType
     */
    public function testGetLatestUpdateAppApi($appType)
    {
      $result = SystemConfigService::getLatestUpdateAppApi($appType);
      $this->assertThat($result, $this->logicalOr($this->isNull(), $this->isInstanceOf(ApiApp::class)));
    }

    public function additionProviderGetLatestUpdateAppApi()
    {
      return [
        'apple'  => [1],
        'android' => [2],
        'null'  => [9999]
      ];
    }
  }

斷言成功結(jié)果:

3. 對異常進(jìn)行測試

使用expectExceptionCode()對錯誤碼進(jìn)行檢測,不建議對錯誤信息文案進(jìn)行檢測。例如檢測設(shè)備被鎖后是否拋出3026錯誤碼。

示例代碼:

?php
  namespace Tests\Unit;

  use App\Services\UserSecurityService;
  use Illuminate\Support\Facades\Cache;
  use Tests\TestCase;

  class UserSecurityServiceTest extends TestCase
  {
    public static $userId = 4;

    /**
     * 設(shè)備鎖檢測
     * @throws \App\Exceptions\UserException
     */
    public function testDeviceCheckLock()
    {
      $this->expectExceptionCode(3026);
      Cache::put('device-login-error-account-', '1,2,3,4,5', 300);
      UserSecurityService::$request = null;
      UserSecurityService::$udid  = null;
      UserSecurityService::deviceCheck(self::$userId);
    }
  }

斷言成功結(jié)果:

4. 測試私有屬性和私有方法使用反射機制

如果只測試私有方法可使用ReflectionMethod()反射方法,使用setAccessible(true)設(shè)置方法可訪問,并使用invokeArgs()或invoke()調(diào)用方法(invokeArgs將參數(shù)作為數(shù)組傳遞)。例如檢測IP是否在白名單中。

示例代碼:

被檢測代碼:

namespace App\Facades\Services;

  /**
   * Class WebDefender
   */
  class WebDefenderService extends BaseService
  {
     //ip白名單
    private $ipWhiteList = [
      '10.*', 
      '172.18.*', 
      '127.0.0.1' 
    ];

    /**
     * ip是否在白名單中
     *
     * @param string $ip
     *
     * @return bool
     */
    private function checkIPWhiteList($ip)
    {
      if (!$this->ipWhiteList || !is_array($this->ipWhiteList)) {
        return false;
      }
      foreach ($this->ipWhiteList as $item) {
        if (preg_match("/{$item}/", $ip)) {
          return true;
        }
      }

      return false;
    }
   }

檢測方法:

?php

  namespace Tests\Unit;

  use App\Facades\Services\WebDefenderService;
  use Tests\TestCase;

  class WebDefenderTest extends TestCase
  {
    /**
     * 測試IP白名單
     * @dataProvider additionProviderIp
     *
     * @param $ip
     * @param $result
     *
     * @throws \ReflectionException
     */
    public function testIPWhite($ip, $result)
    {
      $checkIPWhiteList = new \ReflectionMethod(WebDefenderService::class, 'checkIPWhiteList');
      $checkIPWhiteList->setAccessible(true);
      $this->assertEquals($result, $checkIPWhiteList->invokeArgs(new WebDefenderService(), [$ip]));
    }

    public function additionProviderIp()
    {
      return [
        '10 ip' => ['10.1.1.7', true],
        '172 ip' => ['172.18.2.5', true],
        '127 ip' => ['127.0.0.1', true],
        '192 ip' => ['192.168.0.1', false]
      ];
    }
   }

測試私有屬性可使用ReflectionClass(), 獲取屬性用getProperty(), 設(shè)置屬性的值用setValue(), 獲取方法用getMethod(), 設(shè)置屬性和方法可被訪問使用setAccessible(true)。例如檢測白名單路徑。

示例代碼:

被檢測代碼:

?php
  namespace App\Facades\Services;

  use App\Exceptions\ExceptionCode;
  use App\Exceptions\UserException;
  use Illuminate\Support\Facades\Cache;

  /**
   * CC攻擊防御器
   * Class WebDefender
   */
  class WebDefenderService extends BaseService
  {
    //路徑白名單(正則)
    private $pathWhiteList = [
      //'^auth\/(.*)',
    ];

    private static $request = null;

     /**
     * 請求路徑是否在白名單中
     *
     * @return bool
     */
    private function checkPathWhiteList()
    {
      $path = ltrim(self::$request->getPathInfo(), '/');
      if (!$path || !$this->pathWhiteList || !is_array($this->pathWhiteList)) {
        return false;
      }
      foreach ($this->pathWhiteList as $item) {
        if (preg_match("/$item/", $path)) {
          return true;
        }
      }

      return false;
    }
  }

檢測方法:

?php
  namespace Tests\Unit;

  use App\Facades\Services\WebDefenderService;
  use Illuminate\Http\Request;
  use Tests\TestCase;

  class WebDefenderTest extends TestCase
  {
     /**
     * 檢測白名單路徑
     * @dataProvider additionProviderPathWhiteList
     *
     * @param $pathProperty
     * @param $request
     * @param $result
     *
     * @throws \ReflectionException
     */
    public function testCheckPathWhiteList($pathProperty, $request, $result)
    {
      $reflectedClass = new \ReflectionClass('App\Facades\Services\WebDefenderService');

      $webDefenderService   = new WebDefenderService();
      $reflectedPathWhiteList = $reflectedClass->getProperty('pathWhiteList');
      $reflectedPathWhiteList->setAccessible(true);
      $reflectedPathWhiteList->setValue($webDefenderService, $pathProperty);

      $reflectedRequest = $reflectedClass->getProperty('request');
      $reflectedRequest->setAccessible(true);
      $reflectedRequest->setValue($request);

      $reflectedMethod = $reflectedClass->getMethod('checkPathWhiteList');
      $reflectedMethod->setAccessible(true);
      $this->assertEquals($result, $reflectedMethod->invoke($webDefenderService));
    }

    public function additionProviderPathWhiteList()
    {
      $allPath      = ['.*'];
      $checkPath     = ['^auth\/(.*)'];
      $authSendSmsRequest = new Request([], [], [], [], [], ['HTTP_HOST' => 'api.dev.com', 'REQUEST_URI' => '/auth/sendSms']);
      $indexRequest    = new Request([], [], [], [], [], ['HTTP_HOST' => 'api.dev.com', 'REQUEST_URI' => '/']);
      $noMatchRequest   = new Request([], [], [], [], [], ['HTTP_HOST' => 'api.dev.com', 'REQUEST_URI' => '/product/sendSms']);

      return [
        'index'        => [[], $authSendSmsRequest, false],
        'no request'     => [$allPath, $indexRequest, false],
        'all request'     => [$allPath, $authSendSmsRequest, true],
        'check auth sms'   => [$checkPath, $authSendSmsRequest, true],
        'check path no match' => [$checkPath, $noMatchRequest, false]
      ];
    }
  }

5. 代碼覆蓋率

使用--coverage-html導(dǎo)出的報告含有類與特質(zhì)覆蓋率、行覆蓋率、函數(shù)與方法覆蓋率??刹榭串?dāng)前單元測試覆蓋的范圍。例如輸出WebDefenderTest的代碼覆蓋率到桌面(phpunit tests/unit/WebDefenderTest --coverage-html ~/Desktop/test)

6. 指定代碼覆蓋率報告要包含哪些文件

在配置文件(phpunit.xml)里設(shè)置whitelist中的processUncoveredFilesFromWhitelist=true, 設(shè)置目錄用directory>標(biāo)簽,設(shè)置文件用file>標(biāo)簽。例如指定app/Services目錄下的所有文件和app/Facades/Services/WebDefenderService.php在報告中。

示例代碼:

 ?xml version="1.0" encoding="UTF-8"?>
  phpunit backupGlobals="false"
       backupStaticAttributes="false"
       bootstrap="tests/bootstrap.php"
       colors="true"
       convertErrorsToExceptions="true"
       convertNoticesToExceptions="true"
       convertWarningsToExceptions="true"
       processIsolation="false"
       stopOnFailure="false">
    testsuites>
      testsuite name="Unit">
        directory suffix="Test.php">./tests/Unit/directory>
      /testsuite>

      testsuite name="Feature">
        directory suffix="Test.php">./tests/Feature/directory>
      /testsuite>
    /testsuites>
    filter>
      whitelist processUncoveredFilesFromWhitelist="true">
        directory suffix=".php">./app/Services/directory>
        file>./app/Facades/Services/WebDefenderService.php/file>
      /whitelist>
    /filter>
    php>
      server name="APP_ENV" value="local"/>
      server name="BCRYPT_ROUNDS" value="4"/>
      server name="CACHE_DRIVER" value="credis"/>
      server name="MAIL_DRIVER" value="array"/>
      server name="QUEUE_CONNECTION" value="sync"/>
      server name="SESSION_DRIVER" value="array"/>
      server name="APP_CONFIG_CACHE" value="bootstrap/cache/config.phpunit.php"/>
      server name="APP_SERVICES_CACHE" value="bootstrap/cache/services.phpunit.php"/>
      server name="APP_PACKAGES_CACHE" value="bootstrap/cache/packages.phpunit.php"/>
      server name="APP_ROUTES_CACHE" value="bootstrap/cache/routes.phpunit.php"/>
      server name="APP_EVENTS_CACHE" value="bootstrap/cache/events.phpunit.php"/>
    /php>
  /phpunit>

7. 參考文檔

PHPUnit官方文檔 https://phpunit.readthedocs.io/zh_CN/latest/index.html
反射類 https://www.php.net/manual/en/class.reflectionclass.php
反射方法 https://www.php.net/manual/en/class.reflectionmethod.php

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 詳解Yaf框架PHPUnit集成測試方法
  • PHP單元測試配置與使用方法詳解
  • PHP使用phpunit進(jìn)行單元測試示例
  • php使用yield對性能提升的測試實例分析
  • 高質(zhì)量PHP代碼的50個實用技巧必備(下)
  • 高質(zhì)量PHP代碼的50個實用技巧必備(上)
  • 很讓人受教的 提高php代碼質(zhì)量36計
  • 寫出高質(zhì)量的PHP程序
  • 淺談如何提高PHP代碼質(zhì)量之端到端集成測試

標(biāo)簽:大同 深圳 內(nèi)江 江門 石嘴山 雙鴨山 駐馬店

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHPUnit + Laravel單元測試常用技能》,本文關(guān)鍵詞  PHPUnit,Laravel,單元,測試,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHPUnit + Laravel單元測試常用技能》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHPUnit + Laravel單元測試常用技能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人午夜视频精品一区| 97免费在线视频| 久久综合资源网| 老司机午夜在线| 亚洲特色特黄| 久久精品99国产精| 国产日韩亚洲欧美精品| 欧美激情国产日韩| 欧美日韩国产一二| 亚洲影院天堂中文av色| 欧美色播在线播放| 成年人视频在线免费| 电影在线观看一区| 亚洲黄色尤物视频| 乱子伦在线视频| 国产成人在线视频免费播放| 一区二区三区视频在线播放| 成人av电影在线| 高清一区二区三区四区| 国产精品无码久久av| 在线观看免费视频a| 亚洲另类图片色| 日本aaa在线观看| 国产黄色片中文字幕| 杨幂一区二区国产精品| 亚洲精品少妇久久久久久| 中文字幕亚洲第一| 97超碰最新| 欧美亚洲另类激情另类| 国内精品露脸在线视频播放| 91在线观看地址| 高清国语自产在线观看| 成人在线播放视频| 亚洲精品成人三区| 欧美v亚洲v| 91黄色8090| 99这里都是精品| 欧美一卡2卡3卡4卡无卡免费观看水多多| 亚洲在线久久| 伊人天天久久大香线蕉av色| a级精品国产片在线观看| 日韩中文一区二区| 日韩三级影视基地| 亚洲图片另类小说| 久久久久久久片| 国产女主播在线| 亚洲欧洲精品在线观看| 国产精品入口麻豆免费看| 三级全黄视频| 91精品国产高清一区二区三区| 欧美xxxx少妇| 欧美另类69精品久久久久9999| 精品国产乱码久久久久久蜜臀网站| 中文字幕91视频| 国产一区二区观看| 国产亚洲精品久久久久久久| 中文字幕不卡在线观看| 亚洲精品成人网| 成人网页在线免费观看| 亚洲综合色自拍一区| 亚洲人成精品久久久久久| 毛片一区二区三区四区| 欧美日本高清视频| 久久精品国内一区二区三区| 日本一本高清视频| 秋霞影院一区二区三区| 欧美丰满少妇人妻精品| 欧美性高清videossexo| 亚洲人成网站色在线观看| 国产成人三级在线观看| 国产精品99久久久精品无码| 日韩一区二区三区四区在线| 中文字幕av亚洲精品一部二部| 亚洲精品极品少妇16p| 尤物视频在线免费观看| 精品卡1卡2卡三卡免费网站| 成人欧美一区二区三区的电影| 日韩女同强女同hd| 亚洲成av人影院| 欧美综合视频在线| 欧洲美女7788成人免费视频| 国产精品久久久免费观看| 57pao国产一区二区| 国产一区二区三区视频| 九九九九九伊人| 欧美日韩国产一区二区在线观看| 自拍视频一区| 日韩av福利| 作爱视频免费观看视频在线播放激情网| 欧美成人国产va精品日本一级| 色片在线免费观看| 在线不卡av电影| 亚洲第一会所001| 亚洲欧美日韩网| 91桃色在线观看| 嫩草视频在线观看| 欧美日韩一区二区三区不卡| 久久久国产午夜精品| 国产精品一区在线免费观看| 香港日本韩国三级网站| 国产精品日韩欧美一区| 国产精品视频一二| 97在线免费观看| 亚洲h精品动漫在线观看| 99超碰麻豆| 福利在线观看| 少妇一级淫片免费放播放| 亚洲图中文字幕| 影音先锋男人看片资源站| 国语精品中文字幕| 2019中文字幕在线免费观看| 欧美高清性粉嫩交| 日本在线不卡视频| 亚洲专区**| 欧美又大又粗又长| 摸摸摸bbb毛毛毛片| 成人av动漫| 男人用嘴添女人下身免费视频| 国产高清在线| 国产精品久久久久久久久影视| 国产亚洲欧美一区二区| 91精品久久久久久久蜜月| 国内外成人免费激情在线视频| 国产一区亚洲二区| 国产精品国色综合久久| 国产传媒一区二区| 国产精品美女久久久久高潮| 在线亚洲成人| 99久久99精品| 午夜黄色小视频| 亚洲精品国产精品国自产在线| 精品国产乱码久久久久久久久| 女教师高潮黄又色视频| 台湾成人av| 99riav久久精品riav| 欧美黑人国产人伦爽爽爽| 免费成人深夜夜行视频| 先锋影音成人资源| 99久热在线精品996热是什么| 一区二区中文字幕在线| 国产精品一区视频网站| 国产精品日韩三级| 美女极度色诱视频www免费观看| 国产成人自拍视频在线观看| 最新中文字幕第一页| 亚洲精品午夜在线观看| 好吊妞无缓冲视频观看| 国产99久一区二区三区a片| 泷泽萝拉在线播放| 欧美性大战久久久久久久蜜臀| 久久久无码人妻精品无码| 日韩一区在线视频| 久久中文字幕在线观看| 男人天堂久久久| 在线 丝袜 欧美 日韩 制服| 国产精品视频免费观看| 午夜一区二区三区在线观看| 久久99精品久久久水蜜桃| 国产精品69一区二区三区| 在线视频亚洲| 午夜精品国产精品大乳美女| 亚洲精品视频一二三区| 91av手机在线| 黄污视频在线观看| 一级做a爱片久久毛片| 欧美熟妇交换久久久久久分类| 国产系列电影在线播放网址| 91高清视频免费看| 高清视频在线观看三级| 亚洲欧洲自拍偷拍| 国产91视觉| 日本激情小视频| 成人动漫网站在线观看| 手机看片福利视频| 亚洲第一精品在线观看| 99在线精品视频免费观看20| 亚洲天堂视频在线观看免费| 精品无人区一区二区| 波多野结衣乳巨码无在线观看| 国产69精品久久久久按摩| 国产丝袜自拍| 91在线视频免费91| 51蜜桃传媒精品一区二区| 91.com在线观看| 免费黄色欧美视频| 亚洲狼人综合| 亚洲精品乱码久久久久久蜜桃图片| 精品人妻一区二区三区香蕉| 羞羞网站在线观看入口免费| 玖草视频在线观看| 欧美自拍视频在线| 天堂成人娱乐在线视频免费播放网站| 一区二区精品在线| 成人美女在线观看| 亚洲欧洲国产精品久久| 国产精品久久午夜夜伦鲁鲁| 欧美日韩在线一二三| 精品国精品自拍自在线| 亚洲裸体视频| 另类小说色综合| 亚洲一二三区视频在线观看| 秋霞午夜一区二区| 中文字幕在线观看2018| 国产一区私人高清影院| 欧美日韩在线网站| 欧美一区二区免费观在线| 四虎永久在线精品免费网址| 日本小视频网站| 国产深夜视频在线观看| 成人免费视频caoporn| 欧美三区不卡| 在线观看欧美日韩| 久久久999免费视频| 扒开伸进免费视频| 国产久卡久卡久卡久卡视频精品| 国产精品一区二区三区在线| 黄色的网站在线观看| 日韩理论片久久| 国产中文字幕乱人伦在线观看| 日本丰满少妇一区二区三区| 激情欧美一区二区三区中文字幕| 黑人性受xxxx黑人xyx性爽| 欧美日韩在线视频免费| 亚洲欧美综合久久久久久v动漫| 国产97在线播放| 国产精品第四页| 亚洲欧洲精品在线观看| 日韩午夜三级在线| 九色精品蝌蚪| 国产成年精品| 国产欧美精品一区二区三区| 丝袜国产免费观看| 美女又黄又免费| 欧美大片在线观看一区| 日韩av电影免费播放| 精品国产高清自在线一区二区三区| 欧美一性一乱一交一视频| 国产日韩精品一区二区三区| 成人午夜视频精品一区| 亚洲欧美久久婷婷爱综合一区天堂| 九九久久精品这里久久网| 免费在线观看污视频| 日韩国产高清一区| 亚洲精品蜜桃久久久久久| 日韩免费av片在线观看| 久久色中文字幕| 黄色漫画在线免费观看| 污黄视频在线看| 国产精品中文字幕亚洲欧美| 91精品欧美一区二区三区综合在| 欧美精品久久久久久久久久久| 好看不卡的中文字幕| 国产福利不卡视频| 日本我和搜子同居的日子高清在线| eeuss国产一区二区三区| 欧洲黄色一级视频| 日韩大胆视频| 亚洲aaa在线观看| 青青草成人在线| 性欧美疯狂xxxxbbbb| 久久亚洲国产中v天仙www| 色综合久久88色综合天天看泰| 国产亚洲一区| 香蕉大人久久国产成人av| 亚洲第一偷拍| 欧美美女性生活视频| 成人欧美一区二区三区黑人免费| 日本伊人精品一区二区三区观看方式| 精品国产乱码一区二区三区四区| 国产精品每日更新在线播放网址| 粉嫩av一区二区三区免费观看| 日韩三级电影免费观看| 国产欧美成人xxx视频| 天天干人人干| 精品日本美女福利在线观看| 在线视频中文亚洲| 日韩理论片在线观看| 人妻少妇一区二区三区| 4388成人网| 亚洲精品一二三**| 欧美性高跟鞋xxxxhd| 日本加勒比高清在线| 中文字幕av资源一区| 在线观看国产免费视频| 欧美极品美女视频网站在线观看免费| 男生和女生一起差差差视频| 91久久精品一区| 女人天堂网站| 亚洲女人被黑人巨大进入| 天天干天天操天天爽| 蜜桃视频在线播放| 亚洲国产天堂av| 亚洲第一福利网| 日韩av手机在线| 日本少妇xxxx动漫| 狠狠干五月天| 天海翼女教师无删减版电影| 视频在线观看国产精品| 亚洲电影成人成人影院| 视频在线亚洲| 天天操夜夜逼| 国产探花视频在线| 亚洲国产又黄又爽女人高潮的| 亚洲一区二区三区观看| 日韩va欧美va亚洲va久久| 2017欧美狠狠色| wwwxxxx在线观看| 一区二区三区四区在线播放| 久久久久久久久久久人体| 无码aⅴ精品一区二区三区浪潮| 日韩精品乱码av一区二区| 欧美精品久久久久| jizzjizz日本护士免费| 狠狠爱在线视频一区| 精品国产免费人成在线观看| www欧美com| 精品视频www| 久久精品国产综合精品| 亚洲www视频| 91久久久久久久久久久久久| 成人午夜在线视频| 中文字幕在线不卡一区| 日韩一区日韩二区| 女人偷人在线视频| 91在线无精精品一区二区| 亚洲毛片在线免费| 国产有码在线一区二区视频| 成人av毛片在线观看|