2017-08-16 13 views
0

Jasmineを使って簡単な( "空の")反応ネイティブコンポーネントをテストしようとしています。私はどんな反応するネイティブコンポーネントにアクセスしようとすると、しかし、私は私の設定ファイル(jasmine.json)で JasmineとTypeScriptで反応ネイティブをテストしているときに 'View'モジュールを見つけることができません

は私が持っている...エラーを取得しています:

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

マイpackage.json

"react": "16.0.0-alpha.12", 
"react-native": "0.45.1", 

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

package.jsonに私のテストスクリプト

"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 

エラー:それが使用する "ルート" 要素がViewあるので

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) 

私のコンポーネント上の任意のテストが失敗しました。

なぜこのエラーが発生しますか? Jastの代わりにJasmineを使ってテストする方法はありますか?

答えて

1

Viewはネイティブな要素なので、ネイティブ環境の外部で実行するとジャスミン環境では使用できません。

これは通常、反応ネイティブコンポーネントAPI全体を模倣するか(react-native-mockなどを使用して)、またはEnzymeなどの浅いレンダリングアプローチを使用して解決します。どちらのテストフレームワークでも動作します。

私は、これらの種類のテストを少し書いた後、反応ネイティブとエンドツーエンドのテストとは何の関係もないすべてのロジックを持つコードをリファクタリングすると相互作用をカバーすると、コンポーネントレベルのテストは冗長化され、ほとんど価値がなくなります。

関連する問題