加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Rails Webpacker Jest测试.js.erb文件

发布时间:2020-12-17 01:57:35 所属栏目:百科 来源:网络整理
导读:我有一个Rails 5应用程序,它使用webpacker,文件app / javascript / packs / components / module_one.js,我试图用Jest测试.此文件包含对.js.erb文件的导入,如下所示: // app/javascript/packs/components/module_one.jsimport ModuleTwo from './module_two
我有一个Rails 5应用程序,它使用webpacker,文件app / javascript / packs / components / module_one.js,我试图用Jest测试.此文件包含对.js.erb文件的导入,如下所示:

// app/javascript/packs/components/module_one.js

import ModuleTwo from './module_two.js.erb'

// ...

module_two.js.erb包含以下内容:

// app/javascript/packs/components/module_two.js.erb

import ModuleOne from './module_one'

// ...

在运行webpack-dev-server时,一切都按预期工作,但是当我尝试运行纱线测试时,它会抱怨以下错误:

FAIL  app/javascript/test/module_one.test.js
  ● Test suite failed to run

    /path/to/module_two.js.erb:1
    ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import ModuleOne from './module_one'
                                                                                             ^^^^^^
    SyntaxError: Unexpected token import

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:306:17)
      at Object.<anonymous> (app/javascript/packs/components/module_one.js:1:745)
      at Object.<anonymous> (app/javascript/test/module_one.test.js:1:124)

Test Suites: 1 failed,1 total
Tests:       0 total
Snapshots:   0 total
Time:        2.545s
Ran all test suites.
error Command failed with exit code 1.

所以似乎模块没有从ES6正确转换module_two.js.erb文件,因为当我删除module_one.js的第一行时,它不会再抱怨了.

这是我目前的设置:

// .babelrc

{
  "presets": [
    ["env",{
      "modules": false,"targets": {
        "browsers": "> 1%","uglify": true
      },"useBuiltIns": true
    }]
  ],"plugins": [
    "syntax-dynamic-import",["transform-class-properties",{ "spec": true }]
  ],"env": {
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}
// package.json

{
  // ...
  "devDependencies": {
    "babel-jest": "^21.0.2","jest": "^21.0.2","regenerator-runtime": "^0.11.0","webpack-dev-server": "^2.7.1"
  },"scripts": {
    "test": "jest"
  },"jest": {
    "roots": [
      "<rootDir>/app/javascript/test"
    ],"moduleDirectories": [
      "<rootDir>/node_modules"
    ],"moduleFileExtensions": [
      "js","jsx","erb"
    ],"transform": {
      "^.+.jsx?$": "babel-jest","?.+.jsx?.erb": "rails-erb-loader"
    }
  }
}

解决方法

万一其他人碰到这个.
您的.babelrc似乎缺少“es2015”预设.
Here很好地解释了使用Rails Webpacker配置JS测试的这个问题和其他问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读