javascript - Mocha js 与 react js

标签 javascript node.js mocha.js

我正在尝试使用 mocha js 为我的 react 代码编写测试脚本。测试助手文件是这样的 浏览器.js

var baseDOM = '<!DOCTYPE html><html><head><meta charset="utf-8"></head><body></body></html>';
var jsdom = require('jsdom').jsdom;
global.document = jsdom(baseDOM);
global.window   = document.defaultView;
if ( global.self != null) {
  console.log(' global.self >>>>> ' + global.self);
} else {
  global.self = global.this;
}
global.navigator = {
  userAgent: 'node.js'
};

测试脚本是这样的(component.specs.js)

'use strict';
import ReactDOM from 'react-dom';
import React from 'react';
import { expect } from 'chai';
import { mount, shallow, render } from 'enzyme';
import { App } from '../../js/app.js';
import sinon from 'sinon';
var dispatch = function() {
`enter code here`   console.log('>>>>>>>> Mocking dispatch ');
};

describe('App', function () {
it('App calls check', () => {
     sinon.spy(App.prototype, 'check');
     const enzymeWrapper = mount(<App {...props} />);
     expect(App.prototype.check.calledOnce).to.equal(true);
   });

因此,当我运行 npm test 时,我收到错误消息“jsdom 不是一个函数”。代码有什么问题?

最佳答案

我不熟悉 jsdom但根据示例,我认为您没有正确使用它。 jsdom的示例代码:

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);

这对你意味着 var jsdom = require('jsdom').jsdom; 应该是 var jsdom = require('jsdom').JSDOM; .该示例还使用了 new

也就是说,您可能想查看 jest用于测试 Node/ react - 它非常容易设置并且运行良好。

关于javascript - Mocha js 与 react js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45403756/

相关文章:

node.js - 发现对话的开头

javascript - 传递一个mocha-before中生成的值给express app

javascript - 使用 setInterval 调用对象内部的方法不起作用

JavaScript 将小时和分钟隔离并格式化为 4 位数字

mysql - 如何正确使用node-mysql?

javascript - '&&' 运算符用 { this.props.children && React.cloneElement(this.props.children, { foo :this. foo}) 表示什么

javascript - 跟踪/记录 promise

node.js - mocha 没有在测试目录中运行所有测试

javascript - Node.js,Express : Cannot set headers after they are sent to the client

javascript - Google Analytics for DNN (DotNetNuke) 中的自定义标签值