我正在使用Mocha,Enzyme,Shallow渲染并期望测试ReactJS。 我没有使用babel和ES6。我在Stack Overflow上看过其他问题,但没有人回答我的问题。
我正在使用带有commonJS和Grunt的ES5将JSX编译为JS并将app.built.js文件加载到html文件中,所有这些都加载到页面上。
这是我在speedoApp.jsx
var React = require('react');
var ReactDOM = require('react-dom');
module.exports.default = React.createClass({
render: function() {
return(<p>Hello</p>);
}
});
这是App.js
var React = require('react');
var ReactDOM = require('react-dom');
var SpeedoApp = require('./speedoApp.jsx').default;
ReactDOM.render(
<SpeedoApp />,
document.getElementById('container')
)
我的HTML文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Speedometer</title>
</head>
<body>
<div id="container"></div>
<script src="./scripts/app.built.js"></script>
</body>
</html>
我的测试文件speedoSpec.js
:
var React = require('react');
var expect = require('expect');
var enzyme = require('enzyme');
var shallow = enzyme.shallow;
var SpeedoApp = require('../../react_components/speedoApp.jsx');
describe('Component: speedoApp', function() {
it('should display \'hello\' on the page', function() {
var wrapper = shallow(<SpeedoApp />);
expect(wrapper).to.have.length(1);
});
});
运行mocha时收到错误消息:
var wrapper = shallow(<SpeedoApp />);
^
SyntaxError: Unexpected token <
我还尝试将app.built.js
文件替换为speedoApp.jsx
中的speedoSpec.js
文件。
任何人都知道我哪里出错了?