小编Sac*_*ese的帖子

如何使动态导入与Jest一起使用?

我正在为我的应用程序(Vue.js)编写单元测试,并且在尝试测试动态导入模块的方法时遇到了麻烦。我想模拟库(文件保存器)以测试它是否被正确调用,但是我得到的只是一个错误。模拟文件将被完全忽略。

我曾经有一个“ require.ensure不是一个函数”错误,但是在设置babel-plugin-dynamic-import-node之后,该错误发生了变化。

这是我正在测试的方法:

file.js

[...]
   async saveFile() {
     import('file-saver').then(filesaver => {
       return filesaver.saveAs(data, name);
     })
   },
[...]
Run Code Online (Sandbox Code Playgroud)

test.js

    describe('testing methods', () => {
      it('exports files correctly', async () => {
        wrapper.vm.exportAddressGroups();
      });
    });
Run Code Online (Sandbox Code Playgroud)

跳到底部查看我遇到的错误。

这些是我的配置文件:

jest.config.json

{
  "rootDir": "../",
  "verbose": true,
  "moduleNameMapper": {
    "store/(.*)$": "<rootDir>/src/store/$1",
    "views/(.*)$": "<rootDir>/src/views/$1",
    "components/(.*)$": "<rootDir>/src/components/$1",
    "src/([^\\.]*)$": "<rootDir>/src/$1",
    "user/([^\\.]*)$": "<rootDir>/src/components/user/$1",
    "admin/([^\\.]*)$": "<rootDir>/src/components/admin/$1",
    "shared/([^\\.]*)$": "<rootDir>/src/components/shared/$1",
    "mobile/([^\\.]*)$": "<rootDir>/src/components/mobile/$1",
    "api/([^\\.]*)$": "<rootDir>/src/api/$1",
    "i18n/([^\\.]*)$": "<rootDir>/src/i18n/$1",
    "setup/([^\\.]*)$": "<rootDir>/test/setup/$1",
    "mocks/(.*)$": "<rootDir>/test/mocks/$1",
    "types/([^\\.]*)$": "<rootDir>/types/$1",
    "\\.(png|gif|ttf|eot|svg)$": "<rootDir>/test/mocks/file.js"
  },
  "moduleFileExtensions": ["js", "json", "vue"],
  "modulePathIgnorePatterns": ["<rootDir>/src/components/.*/index.js"],
  "coveragePathIgnorePatterns": …
Run Code Online (Sandbox Code Playgroud)

javascript dynamic-import node.js jestjs

5
推荐指数
1
解决办法
783
查看次数

标签 统计

dynamic-import ×1

javascript ×1

jestjs ×1

node.js ×1