2017-08-11 58 views
1

我有一個簡單的淺度測試。TypeError:_firebase2.default.storage不是函數(Jest測試失敗)

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

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

在添加firebase.storage()功能,我的應用程序(不Layout.jsx直接,但佈局的孩子的孩子) - 我現在沒有這個簡單的測試。我的印象是,這裏的淺層渲染將會......好,淺......不是嗎?

應該指出,我所有的firebase組件工作得很好,除了這個失敗的測試,我沒有收到任何錯誤。

我試過把import 'firebase/storage'帶進去,但這不起作用。想法?

+0

您能否提供更多關於Layout組件和使用'firebase.storeage()'的組件的實現的信息?使用'shallow'確實只會渲染沒有子元素的Layout組件,但這並不意味着其他組件不會被導入,所以如果您在頂層使用該函數,這將解釋爲什麼它失敗。另一個選項,嘗試使用此選項禁用生命週期方法:http://airbnb.io/enzyme/docs/api/shallow.html#arguments – Ignacio

+0

當然。我的佈局組件由我的路由器和來自react-router-dom的路由組件組成。那就是這樣。使用firebase.storage的組件位於一個在Layout中呈現的路徑='/ path'component = {ComponentThatUsesStorage} />'''。我現在會在這裏查看這個鏈接。 – archae0pteryx

+0

我在佈局組件中沒有使用任何生命週期方法。雖然這是一個很好的選擇!就像我說的,我的佈局組件實際上只是渲染Route組件,而沒有其他的東西。 – archae0pteryx

回答

1

我將package.json中的測試腳本覆蓋到react-scripts test --env=jsdom --browser並且工作正常。