2017-08-16 109 views
0

我試圖用Jasmine測試一個簡單的(「空」)react-native組件。但我發現了一個錯誤,當我嘗試訪問任何反應,本機組件...使用Jasmine和TypeScript測試react-native時找不到模塊'View'

在我的配置文件(jasmine.json)我有:

{ 
    "spec_dir": ".", 
    "spec_files": [ 
    "src/*.spec.tsx" 
    ], 
    "helpers": [ 
    "./node_modules/ts-node/register.js" 
    ] 
} 

我的package.json

上的package.json
"react": "16.0.0-alpha.12", 
"react-native": "0.45.1", 

"jasmine": "^2.6.0", 
"ts-node": "^3.3.0", 

我的測試腳本

"test": "jasmine --config=jasmine.json" 

我的測試

import * as React from 'react'; 
import App from './App'; 

import { createRenderer } from 'react-test-renderer/shallow'; 
import { StyleSheet, Text, View } from 'react-native'; 

console.log('View', View); // error 

錯誤:

Error: Cannot find module 'View' 
    at Function.Module._resolveFilename (module.js:470:15) 
    at Function.Module._load (module.js:418:25) 
    at Module.require (module.js:498:17) 
    at require (internal/module.js:20:19) 
    at Object.get View [as View] (...\expo-ts-example\node_modules\react-native\Libraries\react-native\react-native-implementation.js:56:23) 
    at Object.<anonymous> (...\expo-ts-example\src\App.spec.tsx:7:21) 
    at Module._compile (module.js:571:32) 
    at Module.m._compile (...\expo-ts-example\node_modules\ts-node\src\index.ts:392:23) 
    at Module._extensions..js (module.js:580:10) 
    at Object.require.extensions.(anonymous function) [as .tsx] (...\expo-ts-example\node_modules\ts-node\src\index.ts:395:12) 

我的組件上的任何測試失敗,因爲它使用的 「根」 元素是View

爲什麼我得到這個錯誤?有什麼方法可以用Jasmine來測試而不是Jest?

回答

1

View是本地元素,因此當您在本機環境外運行它時,Jasmine環境不可用。

這通常是通過任一嘲笑整個反應天然成分API(例如,通過使用類似react-native-mock)解決,或者通過使用淺着色方法如Enzyme。兩者都可以用於任何測試框架。

這就是說,在寫了這些測試之後,我發現如果我重構代碼以使函數中的所有邏輯與react-native和end-to-end測試無關涵蓋了交互,那麼組件級別的測試變得多餘,並且價值很小。

相關問題