在Jasmine测试中配置ES6样式导入的绝对路径

时间:2017-07-06 13:48:15

标签: javascript unit-testing ecmascript-6 jasmine grunt-browserify

我正在使用Jasmine运行单元测试(精确地称为jasmine-es6:https://github.com/vinsonchuong/jasmine-es6)并且希望将Jasmine配置为使用绝对路径。

在浏览我的脚本时,我将Grunt配置为使用“app”路径作为源文件的根目录。在浏览器中加载这样的浏览器脚本后,它可以正常工作。这是我的Gruntfile的一部分:

Gruntfile.js

newUIContentScript: {
              options: {
                  transform: [
                      ['babelify', {
                          presets: ['es2015', 'react'],
                          plugins: ["transform-object-rest-spread"],
                          babelrc: false,
                          sourceMaps: true
                      }]
                  ],
                  browserifyOptions: {
                      paths: ["./app"] // enables using absolute paths with ./app as root
                  }
              },
              src: [
              'app/scripts-old/*.js'
              'app/scripts-new/*.js', // and new UI scripts
              'app/common/*.js',
              ],
              dest: '<%= config.srcBundle %>/newScriptBundle.js' 
          },

这样我就可以在JS文件中使用ES6样式导入中的绝对路径:

应用程序/脚本岁/ application.js中

import MyReducer from "scripts-new/Reducer";
import MyEventNames from "common/MyEventNames";

代替相对路径:

应用程序/脚本岁/ application.js中

import MyReducer from "../scripts-new/Reducer";
import MyEventNames from "../common/MyEventNames";

现在,当我运行Jasmine测试时,我收到以下错误:

Error: Cannot find module 'scripts-new/Reducer'
    at Module._resolveFilename (module.js:469:15)
    at Function.Module._resolveFilename (<project>\node_modules\register-module\index.js:18:10)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (<project>/spec/app/new-scripts/ReducerSpec.js:1:1)
    at Module._compile (module.js:570:32)
    at loader (<project>\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (<project>\node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:487:32)

我使用默认的jasmine.json配置文件。我没有看到任何配置选项来设置绝对路径,就像我在项目中使用它们一样。我不想回退使用相对路径,因为绝对路径使我的导入变得不可读(项目结构更加复杂,这是简化示例)。

是否还有其他方法可以测试ES6导入?是否可以以其他方式配置路径?

0 个答案:

没有答案