2016-10-19 4 views
7

私は現在、反応しているネイティブプロジェクトに取り組んでおり、Firebase JS SDKを利用したいと考えています。すべてのAPIに精通するために、私はJestでいくつかの学習テストを書くことを考えました。これは私のテストされています。残念ながら、私はこのエラーを取得していJest + Firebase:TypeError:未定義のプロパティ 'defineProperties'を読み取ることができません

import Firebase from 'firebase'; 
describe('Firebase', function() { 
    it('should work', function() { 
    expect(null).toBeNull() 
    }) 
}); 

: ●テストスイートは、私がimport React from 'react'すべてとインポート状態が正常に動作し交換する場合

TypeError: Cannot read property 'defineProperties' of undefined 

    at node_modules/firebase/app-node.js:18:234 
    at Object.<anonymous> (node_modules/firebase/app-node.js:23:260) 
    at Object.<anonymous> (node_modules/firebase/firebase-node.js:8:16) 
    at Object.<anonymous> (firebase.test.js:1:104) 

を実行することができませんでした。なぜFirebaseを使っていくつかのAPI呼び出しをテストできないのです。

は、これが私のpackage.jsonです:

{ 
    ..., 
    "dependencies": { 
    "firebase": "^3.5.0", 
    "react": "15.3.2", 
    "react-native": "0.35.0" 
    }, 
    "jest": { 
    "preset": "jest-react-native" 
    }, 
    "devDependencies": { 
    "babel-jest": "16.0.0", 
    "babel-preset-react-native": "1.9.0", 
    "jest": "16.0.1", 
    "jest-react-native": "16.0.0", 
    "react-test-renderer": "15.3.2" 
    } 
} 
+1

ここでも同じです。 Firebaseはアプリケーション自体の中でうまく動作しますが、テストを実行しようとするとこのエラーが発生します。かなり厄介なこと:( –

+0

と同じです。あなたのアプリをどのように構造化するかの解決策を見つけましたか? – hs2345

+0

'firebase 'から' firebaseとしてfirefox 'をインポートすると同じ問題が発生します。 undefined ' – rel1x

答えて

2

問題はインストールと当社の能力に「輸入」firebaseを破る「冗談-反応するネイティブ」「反応するネイティブ」とプリセットを設定することです! test.jsファイルでrequire firebase(ではなくimport)に修正し、react-nativeをインポートする行を追加します。 importなしreact-nativeに追加すると、require('firebase')になりますが、テストベースファイルにはfirebaseは含まれません!ここで私のgithub repoは、エラーを再現する手順とその修正方法を説明しています。

もこれは私がプリプロセッサオプションとは何を変更するたびに発生するようです

./node_modules/jest/bin/jest.js --no-cach

を実行する必要があり、古い冗談キャッシュがあるかもしれません。

See jest documentation on caching issues.

+0

それは私のためだ!私はそれがうまくいっていない冗談キャッシングのために違った働きをすることができたと思う:)私はLinuxマシンでこれをローカルとCloud9で試した。どちらも動作します。主なものは '' babel ':{"presets":["es2015"、 "react-native"]} 'を使うことです。または、あらかじめ用意されたプリセットの.babelrcファイルを使用します。 –

+0

Jestプリセットを削除しても本当にうまくいきました。できるだけ早く奨励金を授与します(10時間後)。 –

+0

ありがとう!それは私の問題を実際に解決しました。私はエラーなしでFirebaseをインポートできます。それは私の実際の質問だったので、残念ながら '' jest ''を削除しました:{"preset": "jest-react-native"} 'エラーを" react-native " __DEV__は定義されていません。それについてのアドバイスは? –

関連する問題