我正在为我的应用程序(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)