摩卡js与反应js

我正在尝试使用摩卡js编写testing脚本来处理我的反应代码。 testing助手文件就像这个browser.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' }; 

testing脚本就像这样(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); }); 

所以,当我运行npmtesting时,我得到的错误是“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

也就是说,你可能想要检查节点/反应testing – 这是非常容易设置和运作良好。