2016-12-17 4 views
0

Je suis en train d'écrire le premier test pour React composants et continuer à obtenir l'erreur:Mocha + React: navigateur n'est pas défini

ReferenceError: navigator is not defined 

Je composant et l'un de ses enfants utilisent codemirror pour afficher textareas modifiables. La chose est que dans codemirror il y a une vérification pour le type de navigateur. Et puisque je cours ce code pas dans le navigateur, mais dans le terminal avec node.js il n'est pas défini.

Certaines personnes sur SO conseillé de définir la variable globale, mais cela n'a pas fonctionné pour moi. Voici le code du test:

global.navigator = { 
    userAgent: 'node.js' 
}; 

import React from 'react' 
import { shallow, render } from 'enzyme' 
import { expect } from 'chai' 
import { MessagesView } from '../../components/MessagesView' 

describe('components',() => { 
    describe('Message views',() => { 
     it('render buttons',() => { 

     }) 
    }) 
}) 

Existe-t-il encore un moyen de définir la variable de navigation? Ou peut-être que je peux définir des variables globales avec des options moka?

Répondre

2

Jetez un coup d'oeil ici https://github.com/airbnb/enzyme/blob/master/docs/guides/jsdom.md

Fondamentalement, vous devez configurer jsdom pour créer l'objet de la fenêtre pour vous.

var jsdom = require('jsdom').jsdom; 

global.document = jsdom(''); 
global.window = document.defaultView; 
Object.keys(document.defaultView).forEach((property) => { 
    if (typeof global[property] === 'undefined') { 
    global[property] = document.defaultView[property]; 
    } 
}); 

global.navigator = { 
    userAgent: 'node.js' 
}; 

Ceci devrait être placé dans le fichier d'installation de Mocha.

+0

Courir dans le même numéro 6 mois plus tard et trouvé cette réponse ... – Tamara

+0

Je viens de trouver votre commentaire lol: D – damianfabian