摩卡+阵营:

问题描述:

我想先写测试反应的组分,并不断收到错误导航仪没有定义:摩卡+阵营:

ReferenceError: navigator is not defined 

我有分量和它的一个孩子使用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',() => { 

     }) 
    }) 
}) 

是否还有一种方法来设置导航器变量?或者,也许我可以用摩卡选项设置全局变量?

看看这里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' 
}; 

这应该放置在Mocha的设置文件中。

+0

6个月后遇到同样的问题,发现这个答案... – Tamara

+0

我刚刚发现你的评论lol:D – damianfabian