學習 React Native 11
不同的目標設備
有件重要的事情一定要時刻記著,就是對于移動開發來說, 不同的設備都會有不同的規范。 相對于網站面對不同的瀏覽器開發的那種碎片式的生態系統,操作系統以及屏幕的大小,移動設置在某個程度上有些類似。所以在不同的設備上測試您的應用程序也是一樣重要。 對 iOS 的開發, 在開發之前要做好決定您是想開發 iPhone 版還是 iPad 版 (或者說是通用的應用,目標是兩處設備的一系列版本)。 甚至對于分開的 iOS 開發版本,仍然要考慮其它一些重要的影響,比方,iPhone 6 就比他先前的各版本 iPhone 有更大的屏幕。
Xcode 擁有各種各樣的設備模擬器,以協助您完成應用程序的設備測試。 只需要在Xcode 點擊正在使用的目標模擬器左上角就可以輕松更換調試設備的模擬器:
在 Flow 中進行類型檢查
Flow 是一個靜態類型檢查的 JS 庫。 他依靠類型接口來檢查類型錯誤,即使對于那些未做宣布的代碼, 同時也能允許您慢慢的給已經存在的項目增加類型注釋。
運行 Flow 很簡單:
flow check
默認的應用程序里有一個 .flowconfig 文件,該文件用來配置 Flow 基本參數。 如果您看到了很多和 node_modules 相關的錯誤,就在.flowconfig文件的 [ignore] 中加入下面的一行:
.*/node_modules/.*
這樣所有的和 node_modules相關的錯誤就會被忽略。
再運行一遍 flow check, 這次應該不會再看到報錯信息了。
$ flow check
$ Found 0 errors.
在開發您的 React Native 應用程序的時候,放心大膽的使用Flow來協助您的開發吧。
使用 Jest 測試
React Native 支持使用Jest 來測試 React 的組件。 Jest 是在Jasmine之上所構建的一個單元測試框架。 他提供了一個非常棒的自動模擬功能,能很好的結合 React的測試工具一起使用。
要使用 jest, 首先得安裝他。
npm install jest-cli --save-dev
安裝完成后需要更新 package.json 文件,這樣才能把測試腳本包含進來:
{ ... "scripts": { "test": "jest" } ... }
這才能確保當您輸入 npm test的時候,可以開始調用jest.
接下來,創建一個 tests 目錄。 Jest 將會以遞歸的形式在 tests 目錄下搜索文件,并且運行他們。
Mkdir tests
現在可以創建一個新的文件了, tests/dummy-test.js, 開始寫您的第一個測試:
'use strict'; describe('a silly test', function() { it('expects true to be true', function() { expect(true).toBe(true); }); });
現在可以運行 npm test了,應該可以預計這個測試肯定能通過了。
當然了,真正的測試還是能做很多工作的,并不象這個瑣碎的示例文件。更好的參考文件可以在 React Native 代碼庫中的Movies 示例app 中找到。
在這里,我從 Movies 示例應用中抽取一個縮減版的 getImageSource 的測試文件:
/** * Taken from https://github.com/facebook/react-native/blob/master/Examples/Movies/__tests__/getI */ 'use strict'; jest.dontMock('../getImageSource'); var getImageSource = require('../getImageSource'); describe('getImageSource', () => { it('returns null for invalid input', () => { expect(getImageSource().uri).toBe(null); }); ... });
注意您需要清晰的表述需要在模擬文件中阻止 Jest, 然后再獲得您的依賴的結果。 如果想了解更多的關于 Jest 的知識,我推薦您查看 Jest 的文檔。
總結
您可以隨您自己喜歡來選擇或者拋棄這些工具, 同時您也有很多機會獲取到更多更有趣的工具。 然而,這些工具其實能在您的開發流程中起到很大作用,所以如果有可能盡可能的試試他們! 下一章節,我們就會開始真正建立一個更加復雜點的應用了,這些工具能協助您調試以及測試該應用。
不深思則不能造于道。不深思而得者,其得易失。
名人名言- 曾國藩
- By 優聯實達
- 2015-11-29
- 1826
- 公司新聞,網站開發,網站設計,UI