2017-07-30 69 views
1

我想寫我的反應代碼使用摩卡js測試腳本。測試幫助文件是這樣的 browser.js摩卡js與反應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測試中,我得到的錯誤因爲'jsdom不是一種功能'。代碼有什麼問題?

+0

更多鈔票重複問題https://stackoverflow.com/questions/41194264/mocha-react-navigator-is-not-defined/41195438?noredirect=1#comment75358173_41195438 – damianfabian

回答

1

我不熟悉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以測試節點/反應 - 這非常容易設置並且運行良好。

+0

由於它的工作! – Aayushi