iOS開發(fā)之如何模擬數(shù)據(jù)(一)

背景

最近APP上線了一個版本,但是上線后發(fā)現(xiàn)測試數(shù)據(jù)(應(yīng)該是接口返回的,但是寫死了)沒有刪除,導(dǎo)致線上出現(xiàn)嚴重的BUG。

問題

那么如何在開發(fā)中使用測試數(shù)據(jù)。通常情況下為了方便使用,我們會在代碼中直接創(chuàng)造一些假數(shù)據(jù)使用,方便快捷,但是這不僅污染了代碼(測試數(shù)據(jù)一大堆),而且有時候你正在改一個東西時被其他事情打斷了,回來后又忘了改掉測試數(shù)據(jù)就尷尬了。所以這是中不好的習慣。

解決辦法:

一、本地搭建測試服務(wù)器:

就是本地自己搭個服務(wù)器,然后把開發(fā)時需要攔截的網(wǎng)絡(luò)請求地址改為自己搭建的服務(wù)器地址,然后返回自己自定義的JSON數(shù)據(jù)。但這種方式也有三個缺點:

  1. 有一定門檻,雖然搭建服務(wù)器是很簡單的事,并不是所有人都會,也是需要一定的學習成本的。
  2. 還是要修改源碼中網(wǎng)絡(luò)請求的地址,這雖然已經(jīng)把源碼污染降到最低了,但畢竟還是有。
  3. 要想模擬不同的網(wǎng)絡(luò)狀態(tài),還需去修改服務(wù)器的代碼,不方便。

二、網(wǎng)絡(luò)代理

第二種就是利用現(xiàn)有的網(wǎng)絡(luò)代理軟件,直接攔截對應(yīng)的網(wǎng)絡(luò)請求,然后返回本地寫好的JSON數(shù)據(jù)。

  1. 不會污染代碼,代碼寫的就是線上的邏輯,接口地址不需要改變,也不需要寫測試數(shù)據(jù)。
  2. 攔截起來很方便,許多網(wǎng)絡(luò)代理軟件,都自帶攔截甚至改寫網(wǎng)絡(luò)請求的功能,所以啟動攔截功能很方便。
  3. 方便調(diào)試,網(wǎng)絡(luò)代理一般都有改變一個網(wǎng)絡(luò)請求狀態(tài)的功能,可以輕松實現(xiàn)返回網(wǎng)絡(luò)錯誤、網(wǎng)絡(luò)超時和延遲網(wǎng)絡(luò)請求等不同的網(wǎng)絡(luò)請求狀態(tài)的功能,非常方便。

下面介紹一下如何通過charles的map local功能實現(xiàn)接口請求攔截,然后返回自己生成的json數(shù)據(jù)。

map local設(shè)置流程

Charles配置:

1、Proxy -> Proxy Settings ,填入代理端口8888 ,并且勾選 “Enable transparent HTTP proxying"

14993277462433.png

iPhone設(shè)置:

  1. 首先保證iphone和你的mac在同一網(wǎng)段
  2. 獲取mac電腦的ip地址
  3. 進入手機設(shè)置 -> 無線局域網(wǎng) -> 選中連接的wifi -> 進入wifi詳情 -> 切換 ”HTTP代理“為手動 -> 輸入mac電腦對應(yīng)的ip地址和代理端口8888
  4. 連接之后,Charles會彈出提示框,點擊allow之后,手機請求網(wǎng)絡(luò)就會走代理(mac電腦)。

mac local配置

1、 Tools -> Map Local...

屏幕快照 2017-07-06 下午4.01.24.png

2、 勾選 ” Enable Map Local“

屏幕快照 2017-07-06 下午4.02.49.png

3、點擊 ”Add“添加要攔截的接口地址(可以直接把整個連接填入 Host選項,它自己會識別各個選項)。

屏幕快照 2017-07-06 下午4.03.28.png
屏幕快照 2017-07-06 下午4.05.18.png
屏幕快照 2017-07-06 下午4.05.31.png

4、填寫Local Path,這個是你本地json文件的路徑

屏幕快照 2017-07-06 下午4.05.48.png

5、點擊”O(jiān)K“添加完畢,啟動APP,當調(diào)用這個接口的時候,代理就會攔截接口請求,然后返回你本地的JSON文件中的json數(shù)據(jù)。

參考鏈接:

  1. http://www.itdecent.cn/p/afef615c932e
  2. http://www.itdecent.cn/p/5539599c7a25

問題:

https抓包問題:
1、Charles: Proxy -> SSL Proxying Settings -> Enable SSL Proxying -> 添加你要攔截的Host

14993296057932.png

2、手機安裝HTTPS證書
通過電腦瀏覽器打開http://charlesproxy.com/getssl
下載對應(yīng)系統(tǒng)的證書,然后通過郵件發(fā)送給手機,手機下載安裝驗證。
3、證書信任
1、iOS低版本系統(tǒng),好像不需要證書信任也能攔截到https
2、iOS10.3真機抓包https,手機設(shè)置 -> 通用 -> 關(guān)于本地 ->底部證書信任設(shè)置 -> 打開charles證書信任 才能抓包。掛證書的API貌似抓不到包,只顯示請求錯誤,只有不掛證書的才能抓包。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • 《ilua》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 1...
    葉染柒丶閱讀 11,488評論 0 11
  • 世間最復(fù)雜的就是我們?nèi)说母星?,因為難以琢磨,所以經(jīng)常有人說細節(jié)將決定愛情的成敗,那么有沒有什么細節(jié)可以檢測出愛情呢...
    男人風尚club閱讀 374評論 0 0
  • 我和我在基礎(chǔ)物理學界的同事們是愛因斯坦的理性的后繼人,樂于自認為我們是在探求美。 有些物理方程丑得讓人不愿多看一眼...
    鴨梨山大哎閱讀 381評論 0 0
  • 深夜書·卷二《師門》 天空很好 雨過初晴 朋友說 希望你的心情也是 但愿 以前 我不知道我喜歡云 因為星星月亮總是...
    涼玊閱讀 222評論 0 1

友情鏈接更多精彩內(nèi)容