亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 利用Jest測(cè)試React組件

利用Jest測(cè)試React組件

來(lái)源:千鋒教育
發(fā)布人:wjy
時(shí)間: 2022-06-02 11:17:00 1654139820

## **利用Jest測(cè)試React組件**

> Jest 是一個(gè)由 facebook 維護(hù)的測(cè)試框架,在本文中,我們將利用 Jest 來(lái)測(cè)試 React 組件。我們將首先了解如何在純 JavaScript 函數(shù)上使用 Jest,然后再了解它提供的一些開箱即用的特性,這些特性旨在使測(cè)試 React 應(yīng)用程序變得更容易。

利用 Jest測(cè)試React組件

1

注意,Jest 并不是專門針對(duì) React 的測(cè)試框架,你可以使用它來(lái)測(cè)試任何 JavaScript 應(yīng)用程序。然而,它提供的一些特性對(duì)于測(cè)試用戶界面非常方便,這就是它非常適合 React 的原因。

## **示例程序**

在可以進(jìn)行測(cè)試前,我們需要一個(gè)應(yīng)用程序,在此以一個(gè)待辦事項(xiàng)列表為例,大家可以從 Github 中克隆該應(yīng)用:testing-react-with-jest。

示例項(xiàng)目利用 webpack 進(jìn)行構(gòu)建,

應(yīng)用程序的入口點(diǎn)是 `src/index.js`,它將 `<App>` 組件呈現(xiàn)到 HTML 中:

```js
import React from 'react'
import { render } from 'react-dom'
import App from './App.jsx'

render(
  <App />,
  document.getElementById('root')
)
```

應(yīng)用程序中組件樹層級(jí)結(jié)構(gòu)如下:

2


應(yīng)用中使用到的初始狀態(tài)數(shù)據(jù)及業(yè)務(wù)邏輯在 `src/state/index.js` 中:

```js
export const initialTodos = [ ... ]

export const addTodoItem = (todos, todo) => { ... }

export const toggleTodoItem = (todos, id) => { ... }

export const removeTodoItem = (todos, id) => { ... }
```

UI 界面效果:

3

## **Jest使用**

Jest 于 2014 年首次發(fā)布,雖然它最初引起了很多人的興趣,但該項(xiàng)目一度處于休眠狀態(tài)。然而,F(xiàn)acebook 投入了大量精力來(lái)改進(jìn) Jest,隨后發(fā)布了一些更新的版本,與最初的開源版本相比,Jest 的唯一相似之處是名稱和徽標(biāo),其他一切都已更改和重寫。

## **安裝與配置Jest**

首先,我們需要安裝 Jest,由于我們也在使用 Babel,所以一并安裝相關(guān)的模塊,使 Jest 和 Babel 開箱即用:

```js
$ npm install jest babel-jest --save-dev
# 或
$ yarn add jest babel-jest --dev
```

在項(xiàng)目根目錄下創(chuàng)建 `__tests__` 目錄,Jest 希望在一個(gè)`__tests__` 目錄中找到我們的測(cè)試,這已經(jīng)成為 JavaScript 社區(qū)的流行約定,當(dāng)然,如果你對(duì)創(chuàng)建 `__tests__` 目錄統(tǒng)一管理不感冒,Jest 也支持查找任意的 `*.test.js` 或 `*.spec.js` 文件。

下面我們來(lái)測(cè)試我們的狀態(tài)函數(shù)。

繼續(xù)創(chuàng)建 `__tests__/state/index.test.js`,在正式測(cè)試之前,我們先看是否能夠正常進(jìn)行測(cè)試:

```js
describe('數(shù)字加減算術(shù)運(yùn)算', () => {
  test('3加2減5等于0', () => {
    expect(3 + 2 - 5).toBe(0)
  })
})
```

在 `package.json` 文件中添加 `npm scripts` 任務(wù):

```js
{
  "scripts": {
    "test": "jest"
  }
}
```

然后在命令行中執(zhí)行測(cè)試任務(wù):

```js
$ npm test
```

運(yùn)行結(jié)果:

4

在 Jest 中,我們可以根據(jù)需要使用 `describe` 和 `test` 嵌套測(cè)試,`describe` 創(chuàng)建一個(gè)將幾個(gè)相關(guān)測(cè)試組合在一起的塊,`test` 是運(yùn)行測(cè)試的方法。在此測(cè)試中,使用了 `expect` 和 `toBe` 來(lái)檢測(cè)兩個(gè)值是否完全相同。相關(guān) API 使用我們可以在 Jest 官方 API 文檔 中進(jìn)行查閱,本文中我們也可以來(lái)了解一些 Jest 的斷言。

## **測(cè)試業(yè)務(wù)邏輯**

我們已經(jīng)通過一個(gè)示例看到了 Jest 在測(cè)試中的工作,下面我們來(lái)測(cè)試狀態(tài)邏輯中的一個(gè)函數(shù) `removeTodoItem`:

```js
export const removeTodoItem = (todos, id) => todos.filter(todo => todo.id !== id)
```

`removeTodoItem` 接收要?jiǎng)h除待辦事項(xiàng)的當(dāng)前狀態(tài)與待刪除待辦事項(xiàng)的 id。

利用 `describe` 與 `test` 編寫該測(cè)試:

```js
describe('待辦事項(xiàng)操作測(cè)試', () => {
  test('刪除待辦事項(xiàng)', () => {
   
  })
})
```

可能大家也會(huì)看到其它文檔中使用 `it` 來(lái)代替 `test`,其實(shí) `it` 是作為 `test` 的別名使用的,二者是相同的作用。

下面開始編寫斷言,首先,可以創(chuàng)建一個(gè)初始狀態(tài) `todos` 數(shù)組,然后將它傳遞給 `removeTodoItem`,再傳遞我們想要?jiǎng)h除的新的待辦事項(xiàng) id,`removeTodoItem` 會(huì)返回完成后的狀態(tài),可以如下定義:

```js
describe('待辦事項(xiàng)操作測(cè)試', () => {
  test('刪除待辦事項(xiàng)', () => {
    const todos = [
      {id: 1, title: '復(fù)習(xí) React 基礎(chǔ)知識(shí)', completed: true},
      {id: 2, title: '復(fù)習(xí) React Hooks 使用', completed: false}
    ]
    const finishedTodos = removeTodoItem(todos, 1)

    expect(finishedTodos).toEqual([{id: 2, title: '復(fù)習(xí) React Hooks 使用', completed: false}])
  })
})
```

在這里我們使用 `toEqual` 來(lái)做出斷言,它對(duì)引用類型的對(duì)象將進(jìn)行“深”比較是否相等。`toBe` 一般用于原始類型的值的比較,例如字符串、數(shù)字等類型,`toEqual` 通常在數(shù)組和對(duì)象上使用。

在命令行中執(zhí)行 `npm test`:

5

可以看到測(cè)試通過。

## **測(cè)試React組件**

不建議在 React 組件上編寫太多的測(cè)試,任何你想測(cè)試的內(nèi)容,比如業(yè)務(wù)邏輯,還是建議從組件中獨(dú)立出來(lái)放在單獨(dú)的函數(shù)中,就像上邊測(cè)試狀態(tài)函數(shù)一樣。但有時(shí)測(cè)試一些 React 交互是很有必要的,如要確保用戶在單擊某個(gè)按鈕時(shí)使用正確的參數(shù)去調(diào)用特定函數(shù)。

*如果利用 Create React App 來(lái)創(chuàng)建項(xiàng)目,從 3.3 以后的版本中已自帶官方推薦的 testing-library,本文暫不討論 testing-library。*

## **安裝與配置Enzyme**

為了編寫我們的測(cè)試,先安裝 Enzyme,這是一個(gè)由 Airbnb 編寫的包裝庫(kù),它使得測(cè)試 React 組件變得更容易。同時(shí),我們還要為我們使用的 React 不同版本安裝適配器,本例中使用 React v17.x,目前還沒有官方適配器可用,但也有社區(qū)版本:

```js
$ npm install --save-dev enzyme @wojtekmaj/enzyme-adapter-react-17
# 或
$ yarn add --dev enzyme @wojtekmaj/enzyme-adapter-react-17
```

對(duì)于 React v16.x,可以使用 `enzyme-adapter-react-16`。

接著對(duì) Enzyme 進(jìn)行少量相關(guān)配置,在項(xiàng)目根目錄下創(chuàng)建 `setup-enzyme.js` 文件:

```js
import { configure } from 'enzyme'
import Adapter from '@wojtekmaj/enzyme-adapter-react-17'

configure({ adapter: new Adapter() })
```

然后在項(xiàng)目根目錄下創(chuàng)建 `jest.config.js` 文件:

```js
module.exports = {
  setupFilesAfterEnv: [
    './setup-enzyme.js'
  ],
  testEnvironment: 'jsdom'
}
```

這告訴 Jest 在執(zhí)行任何測(cè)試之前,為我們運(yùn)行 `setup-tests.js` 文件,由于測(cè)試的是 Web 應(yīng)用程序,所以使用瀏覽器類似的環(huán)境 jsdom 來(lái)代替。

## **編寫組件渲染測(cè)試**

接下來(lái)我們就可以編寫測(cè)試了,我們來(lái)測(cè)試 `TodoItem` 組件是否能夠在段落中渲染待辦事項(xiàng)文本。

創(chuàng)建 `__tests__/components/TodoItem.test.js`:

```js
import React from 'react'
import { mount } from 'enzyme'
import TodoItem from '../../src/components/TodoItem.jsx'

describe('待辦事項(xiàng)-列表項(xiàng)組件', () => {
  test('渲染待辦事項(xiàng)列表項(xiàng)', () => {
   
  })
})
```

從 `enzyme` 中導(dǎo)入 `mount`,用于渲染組件,這樣就可以檢查輸出并對(duì)其進(jìn)行斷言測(cè)試了。即使我們?cè)?Node 環(huán)境中運(yùn)行測(cè)試,也可以編寫需要的 DOM 并進(jìn)行測(cè)試,因?yàn)?Jest 中允許你使用 `jsdom` 庫(kù)操作 DOM,這樣就不必每次都啟動(dòng)瀏覽器來(lái)測(cè)試了。

接下來(lái)我們完成測(cè)試編寫,整個(gè)測(cè)試如下:

```js
import React from 'react'
import { mount } from 'enzyme'
import TodoItem from '../../src/components/TodoItem.jsx'

describe('待辦事項(xiàng)-列表項(xiàng)組件', () => {
  test('渲染待辦事項(xiàng)列表項(xiàng)', () => {
    const todo = {id: 2, title: '復(fù)習(xí) React Hooks 使用', completed: false}
    const wrapper = mount(
      <TodoItem todo={todo} />
    )
    const p = wrapper.find('p')
    expect(p.text()).toBe('復(fù)習(xí) React Hooks 使用')
  })
})
```

簡(jiǎn)單說明一下,我們可以使用 `mount` 來(lái)創(chuàng)建 `TodoItem`,然后調(diào)用 `wrapper.find()` 傳遞一個(gè) CSS 選擇器來(lái)查找節(jié)點(diǎn),由于示例的 DOM 很簡(jiǎn)單,所以直接使用 `p` 元素選擇器查找,這和使用 `jQuery` 類似。最后,可以斷言段落中的文本內(nèi)容應(yīng)該是“復(fù)習(xí) React Hooks 使用”。

6

可以看到測(cè)試通過。

## **編寫交互測(cè)試**

下面我們來(lái)測(cè)試當(dāng)點(diǎn)擊待辦事項(xiàng)列表項(xiàng)中的段落時(shí),修改待辦事項(xiàng)的完成狀態(tài)。

Jest 中提供了 **`spy`** (間諜)的開箱即用的功能,一個(gè) `spy` 是一個(gè)函數(shù),你不用關(guān)心它的實(shí)現(xiàn),只需關(guān)心它的調(diào)用時(shí)間與調(diào)用方式,當(dāng)我們要監(jiān)視函數(shù)時(shí)可以考慮使用它。

要修改待辦事項(xiàng)的完成狀態(tài),需要傳遞 `toggle` 屬性,它是一個(gè)函數(shù),我們現(xiàn)在來(lái)測(cè)試當(dāng)用戶點(diǎn)擊時(shí),該函數(shù)被使用正確的參數(shù)進(jìn)行調(diào)用。

首先使用 `jest.fn()` 創(chuàng)建一個(gè) `spy`:

```js
const toggle = jest.fn()
```

這為我們提供了一個(gè)可以監(jiān)視并確保它被正確調(diào)用的函數(shù)。

接下來(lái)渲染 `TodoItem` 組件:

```js
const toggle = jest.fn()
const wrapper = mount(
  <TodoItem todo={todo} toggle={toggle} />
)
```

然后查找 DOM 節(jié)點(diǎn)并模擬用戶觸發(fā)點(diǎn)擊事件:

```js
const p = wrapper.find('p')
p.simulate('click')
```

`simulate()` 用于模擬用戶事件。

剩下的就是斷言 `spy` 函數(shù)被正確調(diào)用,整個(gè)測(cè)試應(yīng)該如下:

```js
test('點(diǎn)擊修改待辦事項(xiàng)狀態(tài)', () => {
  const toggle = jest.fn()
  const todo = {id: 2, title: '復(fù)習(xí) React Hooks 使用', completed: false}
  const wrapper = mount(
    <TodoItem todo={todo} toggle={toggle} />
  )
  const p = wrapper.find('p')
  p.simulate('click')
  expect(toggle).toBeCalledWith(2)
})
```

我們期望使用待辦事項(xiàng)的 id 作為參數(shù)進(jìn)行調(diào)用,可以用 `expect(toggle).toBeCalledWith(2)` 來(lái)斷言。這樣,我們的測(cè)試就完成了:

7

測(cè)試通過。

## **總結(jié)**

Jest 被大量的使用,已成為 JavaScript 開發(fā)人員最愛的測(cè)試框架之一,相信它會(huì)變得更好。在測(cè)試方面,它擁有速度快、API 簡(jiǎn)單、易配置、IDE 整合、多項(xiàng)目并行等優(yōu)勢(shì),相信隨著大家的使用,你一定會(huì)愛上它的。

文章示例 Github 倉(cāng)庫(kù):[https://github.com/itrainhub/testing-react-with-jest](https://link.zhihu.com/?target=https%3A//github.com/itrainhub/testing-react-with-jest)

**- End -**

更多關(guān)于“web前端培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的提升班,高品質(zhì)課程助理你實(shí)現(xiàn)夢(mèng)想。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
抖音小店運(yùn)營(yíng)做什么的

在當(dāng)前的電商市場(chǎng)中,抖音小店已經(jīng)逐漸成為一種新的電商模式,它集成了社交化、音視頻分享、直播銷售等多種功能,使得消費(fèi)者更加便捷地進(jìn)行商品...詳情>>

2023-10-08 16:36:41
抖音小店照片要求尺寸多大

在抖音平臺(tái)開設(shè)小店已經(jīng)成為了越來(lái)越多人的選擇,相信大家已經(jīng)在各大社交平臺(tái)上看到有不少小店的推廣。在抖音上,照片是展示產(chǎn)品的重要手段,因...詳情>>

2023-10-08 16:14:25
抖音招商團(tuán)長(zhǎng)托管服務(wù)費(fèi)怎么退回來(lái)

抖音招商團(tuán)長(zhǎng)托管服務(wù)是抖音為有意愿創(chuàng)作內(nèi)容并帶動(dòng)其他創(chuàng)作者成為團(tuán)隊(duì)成員的用戶提供的一種服務(wù)。通過該服務(wù),招商團(tuán)長(zhǎng)可以自主組建團(tuán)隊(duì)并得到...詳情>>

2023-10-08 16:08:53
抖音小店怎么做代銷

抖音已經(jīng)成為了一個(gè)非常受歡迎的短視頻應(yīng)用程序,在其中許多用戶都精心打造了自己的小店,用于銷售各種各樣的商品,獲取額外的收入。然而,要想...詳情>>

2023-10-08 15:28:41
怎樣開抖音小店帶貨賺錢

隨著直播帶貨的火熱,越來(lái)越多的人開始嘗試通過抖音小店來(lái)開展帶貨業(yè)務(wù)。抖音小店是抖音直播帶貨的配套,可以讓用戶在購(gòu)買直播中產(chǎn)品時(shí)就實(shí)現(xiàn)購(gòu)...詳情>>

2023-10-08 15:06:36
快速通道
ZOZOTOWN| 2021影音先锋AⅤ资源男人网| 中国人妻XXXXX免费看| 18禁亲胸揉胸膜下刺激免费网站 | 久久久久无码精品国产AV蜜桃1 | 免费免费视频片在线观看| 人成午夜免费大片| 午夜男女无遮挡啪拍视频 | 妺妺窝人体色WWW美女| 日本最大胆的人文体艺术| 无码纯肉视频在线观看喷水| 亚洲熟妇AV日韩熟妇AV| 拔萝卜全程不该盖被子怎么办| 国产精品久久自在自线| 久久久99久久久国产自输拍| 欧美熟妇黑人ⅩXXXXX| 无码一区二区三区AV免费蜜桃| 野花香在线观看免费观看大全动漫| ンピースのエロス在线WWW| 国产无人区卡一卡二卡乱码| 免费A级毛片无码A∨中文字幕| 上边一面亲下边一面膜的功效| 亚洲精品有码在线观看| 宝贝儿感受到它对你的爱了吗小说| 国产性猛交╳XXX乱大交| 男女嘿咻激烈爱爱动态图| 太太你也不想你丈夫被开除吧 | 亚洲AVAV电影AV天堂18禁| 中文字幕AV伊人AV无码AV| 丰满顿熟妇好大BBBBBΒ| 久久久久久久97| 色综合伊人色综合网站无码| 亚洲中文字幕无码第一区| 成人精品一二三区| 久久精品人人做人人爽电影| 日日噜噜夜夜狠狠VA视频| 亚洲一区无码中文字幕| 公和熄洗澡三级在线观看| 久久婷婷五月综合97色一本一本 | 欧美老熟妇欲乱高清视频| 亚洲 欧美 国产 日韩 精品| ALEXANDERWANG妈妈| 黑人干人三区亚洲| 日韩AV无码一区二区三区| 亚洲婷婷五月色香综合缴情| 公交车上拨开丁字裤进入| 老熟女奶头好大呀| 午夜影视啪啪体验区入口| 9人妻人人澡人人爽人人精品| 国产又爽又黄又爽又刺激| 欧洲多毛裸体XXXXX| 亚洲老熟女XXXXHDWAA| 嗯快点别停舒服好爽受不了了| 久久男人AV资源网站无码| 无码精品视频一区二区三区| AV无码久久久久久不卡网站 | 国产精品女同久久久久电影院| 欧美VIDEO性欧美熟妇| 亚洲精品无码AV专区最新 | 亚洲AV无码乱码麻豆精品国产 | 饥渴少妇高清VIDEOS| 秋霞鲁丝片AⅤ无码入口| 野花AⅤ亚洲高清完整版在线观看 野花 高清 中文 免费 日本 | 两个病娇男友轮流爱我资源| 亚洲AⅤ无码乱码在线观看性色 | 三级 丰满 人妻 少妇| 中文字日产幕码三区的做法大全 | 久久亚洲精品综合国产仙踪林 | 无码人妻少妇色欲AV一区二区 | 豪妇荡乳1一5白玉兰免费下载 | 国产V亚洲V欧美V专区| 欧美人与鲁交大毛片免费| 亚洲中文无码a∨在线观看| 国产麻豆剧传媒精品国产AV| 人人爽天天碰狠狠添| 中文字幕人妻中文AV不卡专区| 狠狠色婷婷久久一区二区| 色欲蜜臀AV在线播放| JAPAN丰满人妻VIDEOS| 快添捏我奶头我快受不了了动态图| 亚洲AV成人精品一区二区三区 | 久久青草免费福利资源站| 亚洲AV福利天堂在线观看| 国产SUV精二区九色| 人人人爽人人澡人人高潮| 50岁熟妇大白屁股真爽| 久久亚洲精品中文字幕波多野结衣| 亚洲AV无码专区在线电影成人网| 国产嗷嗷叫高潮快点再用力| 日本老妇XXXXX免费| BBWBBW肥妇BBWBBW| 免费直播视频在线观看| 玉蒲团Ⅲ艳乳欲仙欲| 久久精品亚洲精品无码金尊| 亚洲第一综合天堂另类专| 国产精华精华液一二三区别| 色综合久久88色综合天天| 成年美女黄网站色大免费视频| 欧美亚洲一区二区三区| 99久久国语露脸精品国产色| 免费播看高清大片免播放器一| 永久免费看啪啪的网站| 久久精品国产99久久久小说| 亚洲国产欧美一区二区三区| 国产无人区一码二码三码MBA| 天堂在/线中文在线资源8| 粉嫩AV一区二区三区免费观看| 日本熟妇人妻XXXXX野外呻| 爱情岛论坛线路一官方网站| 欧美性爱XXXX黑人XYX性爽| CHINESE宅妇内射AV| 亚洲无人区一码二码三码区别| 舌头伸进去添的我好爽高视频| 亚洲精品55夜色66夜色| 成人用品有限公司| 女生裙子里面到底穿了啥| 欧美美女多人群交视频| 亚洲色成人四虎在线观看| 国产女人高潮抽搐喷水嗷嗷叫| 日本精品一区二区三区试看| AA区一区二区三无码精片| 嫩BBB槡BBBB搡BBBB| 最新国产精品久久精品| 两根黑人粗大噗嗤噗嗤视频 | 欧美性生交XXXXX免费观看| 中字年轻漂亮的儿媳BD| 强行挺进美艳老师的后臀| 超碰97人人做人人爱亚洲尤物| 四虎影视新紧急入口| 黑人大雞巴XXOO视频| 中国少妇内射XXXXⅩHD| 日本高清在线视频WWW色| 国产精品爽爽VA在线观看无码| 亚洲成a人片在线观看无码专区| 久久综合九色综合欧美狠狠| FREESEXVIDEOS性亚| 偷拍 拍自 欧美色区| 精品综合久久久久久888| JAPANESE五十路熟妇| 无码人妻精品一区二区三区99仓| 久久国产精品娇妻素人| WWW亚洲精品自慰一区二区| 无码人妻aⅴ一区二区三区99| 娇妻被朋友玩得呻吟在线电影| 亚洲А∨天堂久久精品9966 | 天堂资源とまりせっくす| 国产嫖妓风韵犹存对白| 一本色道久久88—综合亚洲精品| 久久综合亚洲色一区二区三区| chinese熟女老女人hd视频| 色偷偷噜噜噜亚洲男人| 好男人在线视频神马影视WWW| 亚洲综合无码AV一区二区| 欧美丰满熟妇BBB久久久| 夫妇联欢会回不去的夜晚樱花| 亚洲A∨精品无码一区二区| 免费AV资源网站| 粉嫩虎白女毛片人体| 野花日本HD免费高清版7| 日本AⅤ精品一区二区三区久久| 国产色视频一区二区三区QQ号| 亚洲伊人久久综合成人| 少妇高潮叫床在线播放| 久久久精品国产SM调教网站| 成都私人家庭影院| 亚洲午夜精品一区二区| 日本老熟妇wwwbbb| 久久久久国产精品人妻AⅤ蜜臀| 波多野结衣乳巨码无在线观看 | 2021国产精品国产精华| 婷婷色综合AⅤ视频| 男男野战爆了我的菊BL| 国精产品一码二码三M| 帮妺妺洗澡忍不住C了她作文| 亚洲S色大片在线观看| 日本久久久久亚洲中字幕| 久久久久亚洲AV无码专区首JN| 国产成人亚洲精品无码青APP| 曰韩欧美群交P片内射| 亚洲AV无码一区二区三区网址 | 美女扒开屁股让男人桶GIF动态| 国产嗷嗷叫高潮快点再用力| 在线观看成人网站| 香港三香港日本三级在线理论 | 中文字幕在线观看亚洲日韩| 亚洲AV成人片色在线观看高潮| 日本人妻丰满熟妇久久久久久| 久久水蜜桃网国产欧美H版护士| 国产精品乱码高清在线观看| 白嫩无码人妻熟妇啪啪区| 18禁裸体动漫美女无遮挡网站| 亚洲精品无码AV人在线观看| 四川丰满少妇A级毛片| 日本高清视频色WWWWWW色| 女人什么姿势下面最紧| 麻豆国产MV视频| 久久夜色精品国产噜噜亚洲AV| 极限少妇人妻无石久久电影网| 国产亚洲VA综合人人澡精品| 国产精品天干天干在线观看澳门|