unit-testing - 无法在模块外使用导入语句 - Vuex 测试类星体
问题描述
你好吗 ?
我在用 Quasar 测试 Vuex 的东西时遇到了问题。
测试组件工作正常,但是当我开始测试我的商店时,我明白了。
规格文件:
/test/jest/__tests__/store/auth/mutations.spec.js
import { store } from 'src/store';
import { mutations } from 'src/store/auth';
import mutations from 'src/store/auth/mutations';
我尝试导入商店内容的所有这些方式,我都收到了这个错误:
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { store } from 'quasar/wrappers';
SyntaxError: Cannot use import statement outside a module
如何在我的规范文件中导入我的商店?
解决方案
您的问题是import
纯 JavaScript 不支持语句,因此 Node.js 也不支持。import
是一个叫做ES Modules
. 由于 Jest 在 Node 中运行您的测试,因此您得到了SyntaxError
无效import { store } from 'quasar/wrappers'
的 JS 语法。
解决方案是您需要告诉 Jest 使用 Babel(或类似工具)来转换您的测试文件,然后再尝试在 Node.js 中执行它。
这需要在你的jest.config.js
, 和相关的包中进行一些配置babel-jest
,babel
并创建一个.babelrc
orbabel.config.js
来告诉 Babel 如何处理你的测试文件。
实际正确的配置可能取决于许多因素,但作为起点,请参考以下内容:
- https://jestjs.io/docs/en/getting-started#using-babel
- https://jestjs.io/docs/en/configuration#transform-objectstring-pathtotransformer--pathtotransformer-object
- https://github.com/facebook/jest/tree/master/packages/babel-jest#setup
另外我建议考虑使用 Quasar CLI,它为您提供了一种为您的 Quasar 项目自动设置 Jest 的便捷方法,包括一个简单的示例测试,您可以将其用作起始参考:https ://testing.quasar.dev/
推荐阅读
- r - R / ggplot 用于 2 个分类特征的百分比是
- vb6 - 数据环境、真正的 DB 网格和 VB6
- python - 通过基于另一列的模式估算列值
- javascript - 如何在嵌套的 javascript 对象上使用扩展运算符?
- webflow - 我正在寻找在 Webflow 项目中做一个无限滚动循环自定义代码
- plaid - 删除 Plaid 中的项目会破坏 access_token 吗?
- .net-core - 构建错误:COMReference .NET CORE 3.0:未找到 AxImp
- javascript - Dialogflow webhook TypeError:无法读取属性“参数”
- hibernate - JPA 多对多更新记录
- java - Jersey 客户端无法反序列化 XML 输出:未找到消息正文阅读器