2017-08-11 3 views
1

Ich habe einen einfachen Flachtest.TypeError: _firebase2.default.storage ist keine Funktion (Jest-Testfehler)

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

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

firebase.storage() Funktionalität meiner app (nicht in Layout.jsx direkt, sondern in dem Kind von Kindern Layout) Bei der Zugabe - i versagt bin jetzt diesen einfachen Test. Ich hatte den Eindruck, dass ein flacher Putz hier wäre ... nun, flach ... nein?

Es sollte angemerkt werden, dass alle meine Firebase-Komponenten funktionieren gut und ich bekomme keine Fehler irgendwo anders als diesen fehlgeschlagenen Test.

Ich habe versucht, import 'firebase/storage' bringen, aber das funktioniert nicht. Ideen?

+0

Können Sie weitere Informationen zur Implementierung der Layoutkomponente und der Komponente, die 'firebase.storeage()' verwendet, angeben? Wenn Sie 'shallow' verwenden, wird die Layout-Komponente zwar nur ohne Children dargestellt, aber das bedeutet nicht, dass die andere Komponente nicht importiert wird. Wenn Sie diese Funktion also auf der obersten Ebene verwenden, würde dies erklären, warum sie fehlschlägt. Eine weitere Möglichkeit ist, versuchen Sie die Lifecycle-Methoden mit dieser Option deaktivieren: http://airbnb.io/enzyme/docs/api/shallow.html#arguments – Ignacio

+0

Sicher. Meine Layout-Komponente besteht aus meinen Router- und Route-Komponenten von react-router-dom. Das ist alles, was dort passiert. Die Komponente, die fireBase.storage verwendet, befindet sich in einer Komponente '' '' '', die im Layout gerendert wird. Ich schaue mir diesen Link hier an. – archae0pteryx

+0

Ich verwende keine Lebenszyklusmethoden in meiner Layout-Komponente. Das ist eine gute Option, um es zu wissen! Wie ich schon sagte, meine Layout-Komponente zeigt nur route-Komponenten und sonst nichts. – archae0pteryx

Antwort

1

Ich überschrieb das Testskript in package.json zu react-scripts test --env=jsdom --browser und es funktionierte.