2017-08-11 2 views
1

J'ai un test de faible profondeur.TypeError: _firebase2.default.storage n'est pas une fonction (échec du test Jest)

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

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

Lors de l'ajout d'une fonctionnalité firebase.storage() à mon application (pas Layout.jsx directement, mais chez l'enfant des enfants de la mise en page) - je suis maintenant échec de ce test simple. J'avais l'impression qu'un rendu peu profond ici serait ... bien, peu profond ... non?

Il convient de noter que tous mes composants Firebase fonctionnent très bien et que je n'obtiens aucune erreur ailleurs que dans ce test défaillant.

J'ai essayé d'introduire import 'firebase/storage' mais cela ne fonctionne pas. Des idées?

+0

Pourriez-vous fournir plus d'informations sur l'implémentation du composant Layout et du composant qui utilise 'firebase.storeage()'? Utiliser 'shallow' ne rendra en effet que le composant Layout sans enfants, mais cela ne signifie pas que l'autre composant ne sera pas importé, donc si vous utilisez cette fonction au niveau supérieur, cela expliquerait pourquoi il échoue. Une autre option, essayez de désactiver les méthodes du cycle de vie avec cette option: http://airbnb.io/enzyme/docs/api/shallow.html#arguments – Ignacio

+0

Bien sûr. Mon composant de mise en page est constitué de mon routeur et des composants Route de react-router-dom. C'est tout ce qui se passe là-bas. Le composant qui utilise firebase.storage se trouve dans un composant '' '' 'qui est rendu dans Layout. Je vais regarder dans ce lien ici maintenant. – archae0pteryx

+0

Je n'utilise aucune méthode de cycle de vie dans mon composant de présentation. C'est une bonne option à savoir cependant! Comme je l'ai dit, mon composant de mise en page ne lit littéralement que les composants Route et rien d'autre. – archae0pteryx

Répondre

1

J'ai écrasé le script de test dans package.json à react-scripts test --env=jsdom --browser et cela a fonctionné.