Mocha + React:导航器未定义

Tam*_*ara 2 javascript mocha.js navigator reactjs

我正在尝试为React组件编写第一个测试,并不断出错:

ReferenceError: navigator is not defined
Run Code Online (Sandbox Code Playgroud)

我有组件,其中一个子组件使用Codemirror来显示可编辑的文本区域。事实是,在Codemirror中可以检查导航器的类型。由于我不是在浏览器中运行此代码,而是在带有node.js的终端中运行,因此未定义。

SO上的一些人建议设置全局变量,但这对我不起作用。这是测试代码:

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', () => {

        })
    })
})
Run Code Online (Sandbox Code Playgroud)

还有设置导航变量的方法吗?或者也许我可以使用mocha选项设置全局变量?

dam*_*ian 7

在这里看看https://github.com/airbnb/enzyme/blob/master/docs/guides/jsdom.md

基本上,您需要配置jsdom才能为您创建窗口对象。

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'
};
Run Code Online (Sandbox Code Playgroud)

这应该放在Mocha的安装文件中。