gpt4 book ai didi

reactjs - Mocha 不会识别 JSX

转载 作者:行者123 更新时间:2023-12-04 14:09:23 25 4
gpt4 key购买 nike

我正在尝试使用 mocha 和 enzyme 更新我的单元测试。我正在测试的代码在 ES6 中,使用 JSX 和 React。

我一直无法让 mocha 在我的测试脚本中的 JSX 上不出错。

测试脚本:

import React from 'react';
import assert from 'assert';
import { shallow } from 'enzyme';
import SamplePageMain from '../SamplePageMain';

describe('<SamplePageMain />', () => {

var samplePage = shallow(<SamplePageMain />);

it('should render', function () {
assert.notEqual(samplePage, null);
});

});

gulpfile.js:
require('babel-core/register');

...

gulp.task('test', function() {
return gulp.src('scripts/**/test/*.js', {read: false})
.pipe(mocha());
});

输出是:
gulp test

[16:19:06] Using gulpfile ~/dev/bikini/gulpfile.js
[16:19:06] Starting 'test'...
[16:19:06] 'test' errored after 62 ms
[16:19:06] SyntaxError in plugin 'gulp-mocha'
Message:
/Users/me/dev/bikini/scripts/components/test/samplePageMain.js: Unexpected token (9:26)
Details:
pos: 206
loc: [object Object]
_babel: true
codeFrame: 7 |
8 |
> 9 | var samplePage = shallow(<SamplePageMain />);
| ^
10 |
11 | it('should render', function () {
12 | assert.notEqual(samplePage, null);
Stack:
SyntaxError: /Users/me/dev/bikini/scripts/components/test/samplePageMain.js: Unexpected token (9:26)
7 |
8 |
> 9 | var samplePage = shallow(<SamplePageMain />);
| ^
10 |
11 | it('should render', function () {
12 | assert.notEqual(samplePage, null);
at Parser.pp.raise (/Users/me/dev/bikini/node_modules/babel- register/node_modules/babel-core/node_modules/babylon/index.js:1425:13)
at Parser.pp.unexpected (/Users/me/dev/bikini/node_modules/babel- register/node_modules/babel-core/node_modules/babylon/index.js:2907:8)
at Parser.pp.parseExprAtom (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:754:12)
at Parser.pp.parseExprSubscripts (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:509:19)
at Parser.pp.parseMaybeUnary (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:489:19)
at Parser.pp.parseExprOps (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:420:19)
at Parser.pp.parseMaybeConditional (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:402:19)
at Parser.pp.parseMaybeAssign (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:365:19)
at Parser.pp.parseExprListItem (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:1232:16)
at Parser.pp.parseCallExpressionArguments (/Users/me/dev/bikini/node_modules/babel-register/node_modules/babel- core/node_modules/babylon/index.js:585:20)

我已经通过 browserify 运行源代码并将其放在测试目录中以证明它不是 mocha/enzyme 本身,从而成功运行了测试。我的问题只是想正确地使用 gulp 魔法。

最佳答案

对于 Babel 6 的用户来说,这是一个非常普遍的问题,它本身(babel-core)不会做任何事情。它要求在转译过程中将转换/插件提供给它。

Babel 提供捆绑的常用插件作为预设。 React 项目常见的是 babel-preset-2015 , babel-preset-reactbabel-preset-stage-0 .在 npm 安装它们之后,添加一个 .babelrc看起来像这样的配置文件:

{
"presets": ["react", "es2015", "stage-0"]
}

对于带有 gulp 的 Mocha ,请查看此堆栈 gulp-mocha how to pass the compilers flag? .

并在此处阅读有关设置 Babel 6 的一般信息 https://babeljs.io/blog/2015/10/31/setting-up-babel-6

关于reactjs - Mocha 不会识别 JSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com