我的测试文件的代码是:
var React = require('react');
var {shalow} = require('enzyme')
var {SearchBox} = require('../static/js/functions')
var expect = require('expect');
describe('Test', function(){
it('1', function(){
expect(true).toEqual(true);
});
});
这是我在functions.js中的React类。
var SearchBox = React.createClass({
render: function() {
return (
<div>
<SearchList data={this.props.data}></SearchList>
<li>
<button id="previous_page" className="previous_page" onClick={back}>Previous</button>
<button id="next_page" className="next_page" onClick={next}>Next</button>
</li>
</div>
)
}
});
它工作得很好,但是我想编写测试,当我运行它时,它输出以下错误:
Irtza@irtza-lenovo-g50-70:~/desktop/Kamal Hasan/pedialink$mocha./js_test/*.js/home/irtza/desktop/Kamal Hasan/pedialink/static/js/functions.js:39,^syntaxerror:意外的标记<;Object.module._extensions.。js(module.js:511:10)处的module._compile(module.js:550:10)处的module.load(module.js:456:32)处的tryModuleLoad(module.js:415:12)处的function.module._load(module.js:407:3)处的module.require(module.js:466:17)处的require(internal/module.js:20:19)处的exports.runinthiscontext(/home/irtza/desktop/Kamal Hasan/pedialink/js_test/test.js:3:19)在module._compile(module.js:541:32)在object.module._extensions.。js(module.js:550:10)在module.load(module.js:456:32)在module.load(module.js:415:12)在function.module._load(module.js:407:3)在module.require(module.js:466:17)(/usr/local/lib/node_modules/mocha/bin/_mocha:405:18)在module._compile(module.js:541:32)在object.module._extensions.js(module.js:550:10)在module.load(module.js:456:32)在tryModuleLoad(module.js:415:12)在function.module._load(module.js:407:3)在function.module.runmain(module.js:575:10)
您的代码是ES5和ES6语法的混合体。
我认为问题来自于这部分代码:
var React = require('react');
var {shalow} = require('enzyme');
var {SearchBox} = require('../static/js/functions');
如果您想使用ES5语法:
var React = require('react');
var shalow = require('enzyme').shalow; // notice how we access object property `.objectProperty`
var SearchBox = require('../static/js/functions');
如果您想使用ES6语法:
import React from 'react';
import {shalow} form 'enzyme'; // notice how we access object property `{objectProperty}`
import SearchBox form '../static/js/functions';
还要确保在function.js文件的末尾,导出组件时使用:
module.exports = SearchBox; // ES5 syntax
export default SearchBox; // ES6 syntax
您需要更新Node(mocha依赖于Node.js)版本(以支持es6模块)或使用requirejs-module.exports...+导出组件,您应该检查您的Node版本支持es6的哪些部分,因为传递给mocha的代码没有“babelized”:)