tho*_*leb 3 unit-testing node.js express jestjs
我有一个带有 CRUD API(带有sequelize)的 Express 应用程序,我想用 Jest 测试它。我对单元测试还很陌生,所以我遵循Jest 网站推荐的本指南。
\n我遇到的问题是我的应用程序是使用 ES6 模块构建的,而 Jest ES6 模块是实验性的,它似乎没有“导入”包。
\n我有这个测试(取自指南)
\nimport request from \'supertest\';\nimport app from \'../app\';\n\ndescribe(\'Test the root path\', () => {\n test(\'It should response the GET method\', done => {\n request(app)\n .get(\'/\')\n .then(response => {\n expect(response.statusCode).toBe(404);\n done();\n });\n });\n});\n
Run Code Online (Sandbox Code Playgroud)\n当我启动它时(NODE_OPTIONS=--experimental-vm-modules npx jest
我必须遵循这个笑话维基页面),它说
\'sequelize\' does not provide an export named \'DataTypes\'
当我正常启动我的应用程序时(比如npm start
)时,它工作正常,没有任何问题。
(完整的错误日志):
\n(node:49576) ExperimentalWarning: VM Modules is an experimental feature. This feature could change at any time\n(Use `node --trace-warnings ...` to show where the warning was created)\n FAIL __tests__/app_test.js\n \xe2\x97\x8f Test suite failed to run\n\n SyntaxError: The requested module \'sequelize\' does not provide an export named \'DataTypes\'\n\n at Runtime.linkAndEvaluateModule (node_modules/jest-runtime/build/index.js:779:5)\n at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:333:13)\n at runJest (node_modules/@jest/core/build/runJest.js:404:19)\n at _run10000 (node_modules/@jest/core/build/cli/index.js:320:7)\n at runCLI (node_modules/@jest/core/build/cli/index.js:173:3)\n
Run Code Online (Sandbox Code Playgroud)\n(和我的 Jest 配置)
\n// Sync object\n/** @type {import(\'@jest/types\').Config.InitialOptions} */\n\nexport default async () => {\n return {\n verbose: true,\n transform: {},\n };\n};\n
Run Code Online (Sandbox Code Playgroud)\n难道我做错了什么 ?我应该改为 commonJS 而不是 ES6
\n谢谢。
\n 归档时间: |
|
查看次数: |
4880 次 |
最近记录: |