摩卡+阵营:
问题描述:
我想先写测试反应的组分,并不断收到错误导航仪没有定义:摩卡+阵营:
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的设置文件中。
6个月后遇到同样的问题,发现这个答案... – Tamara
我刚刚发现你的评论lol:D – damianfabian