2017-08-11 7 views
1

私は単純な浅いテストをしています。私のアプリにfirebase.storage()機能を追加すると(直接ではないLayout.jsxではなく、レイアウトの子供の子で)TypeError:_firebase2.default.storageは関数ではありません(Jestテストの失敗)

import React from 'react'; 
import { shallow } from 'enzyme'; 
import Layout from '../containers/' 

it('renders without crashing',() => { 
    shallow(<Layout />); 
}); 

は - 私は今、この簡単なテストを失敗しています。私はここの浅いレンダリングは...まあ、浅い...という印象を受けましたか?

私のfirebaseコンポーネントはすべてうまく動作していますが、この失敗テスト以外の場所ではエラーが発生していないことに注意してください。

私はimport 'firebase/storage'の持ち込みを試みましたが、これは動作しません。アイデア?

+0

レイアウトコンポーネントの実装と 'firebase.storeage()'を使用するコンポーネントについての詳細は? 'shallow'を使うと実際にはレイアウトコンポーネントを子なしでレンダリングするだけですが、それは他のコンポーネントがインポートされないということを意味するわけではないので、トップレベルでその関数を使用していると、なぜ失敗したのかを説明します。もう1つの選択肢として、このオプションでライフサイクルメソッドを無効にしてみてください:http://airbnb.io/enzyme/docs/api/shallow.html#arguments – Ignacio

+0

私のレイアウトコンポーネントは、私のルータと反応ルータdomのRouteコンポーネントで構成されています。それだけでそれが実現します。 firebase.storageを使用するコンポーネントは、Layoutでレンダリングされる '' '' 'にあります。ここでそのリンクを見ていきます。 – archae0pteryx

+0

レイアウトコンポーネントでライフサイクルメソッドを使用していません。それはしかし、知って良いオプションです!私の言ったように、私のレイアウトコンポーネントは、文字通りRouteコンポーネントだけをレンダリングしています。 – archae0pteryx

答えて

1

package.jsonからreact-scripts test --env=jsdom --browserにテストスクリプトを上書きして動作しました。

関連する問題