首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摩卡不会承认JSX

摩卡不会承认JSX
EN

Stack Overflow用户
提问于 2016-02-10 00:25:47
回答 1查看 6.8K关注 0票数 10

我试图通过使用摩卡和酶来更新我的单元测试。我正在测试的代码是用ES6编写的,使用JSX并作出反应。

我无法让mocha在我的测试脚本中没有在JSX上出错.

测试脚本:

代码语言:javascript
复制
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:

代码语言:javascript
复制
require('babel-core/register');

...

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

产出如下:

代码语言:javascript
复制
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)

我已经成功地运行了测试,方法是通过浏览器化运行源代码,并将其放在测试目录中,以证明它不是mocha/酵素本身。我的问题只是试着用正确的吸食魔法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-10 19:24:10

对于Babel 6的用户来说,这是一个非常普遍的问题,因为它本身(babel核心)不做任何事情。它要求在转换溢出期间将转换/插件提供给它。

Babel提供了一捆普通插件作为预置。React项目常见的有babel-preset-2015babel-preset-reactbabel-preset-stage-0。在npm安装它们之后,添加一个.babelrc配置文件,如下所示:

代码语言:javascript
复制
{
  "presets": ["react", "es2015", "stage-0"]
}

对于带有吞咽功能的摩卡,请查看此堆栈gulp-mocha how to pass the compilers flag?

并在这里阅读有关设置Babel 6一般https://babeljs.io/blog/2015/10/31/setting-up-babel-6的文章

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35304797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档