React Native 回購有幾個(gè)你可以運(yùn)行的測試,來驗(yàn)證你沒有用PR引起擬合。這些測試是用 Travis 持續(xù)集成系統(tǒng)運(yùn)行的,并自動的向你的 PR 發(fā)布結(jié)果。你也可以在 IntegrationTest 和在 Xcode 中的 UIExplorer 應(yīng)用中,使用 cmd+U 本地運(yùn)行。您可以通過在命令行的 npm test
運(yùn)行 jest 測試。但是我們目前還沒有很大的測試覆蓋率,所以大多數(shù)的變化仍將需要大量手工驗(yàn)證,但如果你想幫助我們提高我們的測試覆蓋率,我們是非常歡迎的!
Jest 測試是 JS-only 測試,運(yùn)行在節(jié)點(diǎn)命令行上。測試位于它們測試的文件 __tests__
目錄中,還有一個(gè)對不是位于故障隔離和最大速度測試下的積極模擬功能的強(qiáng)調(diào)。你可以用來自 react-native 根的 npm test
運(yùn)行現(xiàn)有的 React Native jest 測試,并且我們鼓勵你為你想做出貢獻(xiàn)的任何組件添加你自己的測試?;臼纠埧?getImageSource-test.js
。
React Native 提供設(shè)施,使測試需要 native 和 JS 組件進(jìn)行跨橋交互的集成組件更容易。兩個(gè)主要組件是 RCTTestRunner
和 RCTTestModule
。RCTTestRunner
設(shè)置了 React Native 環(huán)境并提供設(shè)備運(yùn)行測試,正如在 Xcode 中的 XCTestCase
(runTest:module
是最簡單的方法)。RCTTestModule
和 TestModule
一樣,通過 NativeModules
被導(dǎo)出到 JS 中。測試寫在 JS 中,當(dāng)它們完成時(shí),必須調(diào)用 TestModule.markTestCompleted()
,否則測試將超時(shí)失敗。測試失敗主要是通過拋出異常表示。它還可以用 runTest:module:initialProps:expectErrorRegex:
或 runTest:module:initialProps:expectErrorBlock:
測試錯誤條件,它預(yù)計(jì)拋出一個(gè)錯誤并驗(yàn)證錯誤與提供的標(biāo)準(zhǔn)相匹配。對于例子的使用,請看 IntegrationTestHarnessTest.js
和 IntegrationTestsTests.m
。
常見的一種集成測試是快照測試。這些測試渲染一個(gè)組件,并使用 TestModule.verifySnapshot()
驗(yàn)證參考圖像的屏幕快照,在幕后使用 FBSnapshotTestCase
庫。參考圖像通過在 RCTTestRunner
中設(shè)置 recordMode = YES
被記錄下來,然后運(yùn)行測試??煺赵?32 位和 64 位系統(tǒng)中略有不同,且在不同的操作系統(tǒng)版本中也有所不同,所以建議你使用正確的配置運(yùn)行測試。同時(shí)強(qiáng)烈建議所有網(wǎng)絡(luò)數(shù)據(jù)被模擬,以及其他潛在的麻煩的依賴性?;臼纠埧?SimpleSnapshotTest
。