28

所以 ava 带有内置的 ES2015 支持,这对于我的实际测试文件来说效果很好。但是,当我这样做时

import {newUser, createUser, login} from './helpers/user';

我无法import在帮助文件中使用和导出,然后我得到:

Users/rowe/Code/fv/foxvision-api/test/api/helpers/user.js:1
(function (exports, require, module, __filename, __dirname) { import request from 'supertest';

SyntaxError: Unexpected token import

对于开箱即用的测试文件,我没有设置特定的 babel 配置。谁能向我解释为什么辅助依赖项没有用 babel 转译?使用test/**/helpers甚至遵循ava 约定

谢谢,罗宾

解决方案

因此,基于thanggoc89的解决方案,我为使其工作所做的工作是:

  1. 添加.babelrc内容:
{
  "presets": [
    "es2015",
    "stage-2"
  ],
  "plugins": [
    "espower",
    "transform-runtime"
  ]
}
  1. 添加到package.json
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}
4

3 回答 3

19

AVA 只编译测试文件。不测试依赖项,因此您需要在项目中设置 babel(我想您这样做是因为您仍然使用 ES6)。

然后在 AVA 的设置中,添加:

"ava": {
  ...
  "babel": "inherit"
}

这意味着使用您的项目 babel 设置来转换测试依赖项。在 AVA 文档中查看更多信息:https ://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md

于 2016-04-19T16:31:07.497 回答
2

使用rweng,我的解决方案变得更简单了。

  1. .babelrc
{
  "presets": [
    "es2015"
  ],
  "plugins": [
    "transform-runtime"
  ]
}
  1. package.json
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}
于 2017-04-13T01:27:47.673 回答
2

不幸的是,标准解决方案不适用于我的情况。这是我适用于 ava + quasar + vue 项目的解决方案

.babelrc

{
  "presets": [
    "es2017",
    "@ava/stage-4",
    "stage-3"
  ],
  "plugins": [
    "transform-runtime"
  ]
}

包.json

"ava": {
  "require": [
    "babel-register"
  ],
  "babel": "inherit"
},
"scripts": {
  "ava": "NODE_ENV=test ava",
  "test": "ava",
  "test:watch": "ava --watch --verbose"
}

安装模块

yarn add babel-register babel-preset-es2017 @ava/babel-preset-stage-4 babel-plugin-transform-runtime babel-preset-stage-3 --dev
于 2017-07-12T09:08:57.030 回答