VueJs Mocha单元测试RUNTIME EXCEPTION ReferenceError:未定义IDBIndex

时间:2019-09-17 20:16:19

标签: firebase unit-testing vue.js mocha

我有一个集成了Firebase的VueJs应用,我正在尝试使用Mocha来测试我的组件。当firebase不是组件中的依赖项时,测试将通过。引入firebase时,在运行单元测试时出现以下错误。

$ vue-cli-service test:unit
 WEBPACK  Compiling...

 DONE  Compiled successfully in 1916ms


 WEBPACK  Compiled successfully in 1916ms

 MOCHA  Testing...

 RUNTIME EXCEPTION  Exception occurred while loading your tests

ReferenceError: IDBIndex is not defined
    at Module../node_modules/idb/lib/idb.mjs (....myapp-web/dist/webpack:/node_modules/idb/lib/idb.mjs:87:1)
    at __webpack_require__ (....myapp-web/dist/webpack:/webpack/bootstrap:19:1)
    at Module../node_modules/@firebase/installations/dist/index.esm.js (....myapp-web/dist/webpack:/node_modules/@firebase/installations/dist/index.esm.js:1:1)
    at __webpack_require__ (....myapp-web/dist/webpack:/webpack/bootstrap:19:1)
    at Module../node_modules/@firebase/performance/dist/index.esm.js (....myapp-web/dist/webpack:/node_modules/@firebase/performance/dist/index.esm.js:1:1)
    at __webpack_require__ (....myapp-web/dist/webpack:/webpack/bootstrap:19:1)
    at Module../node_modules/firebase/dist/index.esm.js (....myapp-web/dist/webpack:/node_modules/firebase/dist/index.esm.js:1:1)
    at __webpack_require__ (....myapp-web/dist/webpack:/webpack/bootstrap:19:1)
    at Module../src/firebaseConfig.js (....myapp-web/dist/webpack:/src/firebaseConfig.js:1:1)
    at __webpack_require__ (....myapp-web/dist/webpack:/webpack/bootstrap:19:1)
    at Module../tests/unit/loginTest.spec.js (....myapp-web/dist/webpack:/tests/unit/loginTest.spec.js:5:1)
    at __webpack_require__ (....myapp-web/dist/webpack:/webpack/bootstrap:19:1)
    at run (....myapp-web/dist/webpack:/node_modules/mocha-webpack/lib/entry.js:3:1)
    at Array.forEach (<anonymous>)
    at Object../node_modules/mocha-webpack/lib/entry.js (....myapp-web/dist/webpack:/node_modules/mocha-webpack/lib/entry.js:10:1)
    at __webpack_require__ (....myapp-web/dist/webpack:/webpack/bootstrap:19:1)
    at ....myapp-web/dist/webpack:/webpack/bootstrap:83:1
    at Object.<anonymous> (....myapp-web/dist/main.js:87:10)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object._module2.default._extensions.<computed> [as .js] (....myapp-web/node_modules/mocha-webpack/lib/util/registerRequireHook.js:148:12)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Module.require (internal/modules/cjs/loader.js:666:19)
    at require (internal/modules/cjs/helpers.js:16:16)
    at ....myapp-web/node_modules/mocha/lib/mocha.js:334:36
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (....myapp-web/node_modules/mocha/lib/mocha.js:331:14)
    at Mocha.run (....myapp-web/node_modules/mocha/lib/mocha.js:811:10)
    at ....myapp-web/node_modules/mocha-webpack/lib/runner/TestRunner.js:191:27
    at ....myapp-web/node_modules/mocha-webpack/lib/webpack/compiler/registerReadyCallback.js:26:7
    at AsyncSeriesHook.eval [as callAsync] (eval at create (....myapp-web/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:36:1)
    at AsyncSeriesHook.lazyCompileHook (....myapp-web/node_modules/tapable/lib/Hook.js:154:20)
    at ....myapp-web/node_modules/webpack/lib/Compiler.js:304:22
    at Compiler.emitRecords (....myapp-web/node_modules/webpack/lib/Compiler.js:489:39)
    at ....myapp-web/node_modules/webpack/lib/Compiler.js:298:10
    at ....myapp-web/node_modules/webpack/lib/Compiler.js:475:14
    at eval (eval at create (....myapp-web/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:11:1)
    at callback (....myapp-web/node_modules/copy-webpack-plugin/dist/index.js:126:17)
    at afterEmit (....myapp-web/node_modules/copy-webpack-plugin/dist/index.js:220:13)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (....myapp-web/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:7:1)
    at AsyncSeriesHook.lazyCompileHook (....myapp-web/node_modules/tapable/lib/Hook.js:154:20)
    at ....myapp-web/node_modules/webpack/lib/Compiler.js:472:27
    at ....myapp-web/node_modules/neo-async/async.js:2818:7
    at done (....myapp-web/node_modules/neo-async/async.js:3522:9)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (....myapp-web/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
    at ....myapp-web/node_modules/webpack/lib/Compiler.js:454:33
    at MemoryFileSystem.writeFile (....myapp-web/node_modules/memory-fs/lib/MemoryFileSystem.js:328:9)
    at writeOut (....myapp-web/node_modules/webpack/lib/Compiler.js:452:30)
    at ....myapp-web/node_modules/webpack/lib/Compiler.js:466:7
    at objectIteratorWithKey (....myapp-web/node_modules/neo-async/async.js:3509:9)
    at timesSync (....myapp-web/node_modules/neo-async/async.js:2297:7)
    at Object.eachLimit (....myapp-web/node_modules/neo-async/async.js:3463:5)
    at emitFiles (....myapp-web/node_modules/webpack/lib/Compiler.js:358:13)
    at Immediate._onImmediate (....myapp-web/node_modules/memory-fs/lib/MemoryFileSystem.js:288:4)
    at processImmediate (internal/timers.js:439:21)


 ERROR  mocha-webpack exited with code 1.

Total task duration: 3.9s
loginTest.spec.js

import { expect } from 'chai';
import { shallowMount } from '@vue/test-utils';
import sinon from 'sinon';
import Login from '../../src/components/Login';
const fb = require('../../src/firebaseConfig');

describe('Login.vue', () => {
    it('Expect login email field to have default value.', () => {
        const wrapper = shallowMount(Login);
        sinon.stub(fb.auth(), 'signInWithEmailAndPassword', () => {});
        expect(wrapper.find('#email1').text())
            .to()
            .be('you@email.com');
    });
});

我尝试了许多不同的解决方案来修改vue.config.js文件,以根据其他建议更改某些节点模块配置,但仍然没有运气。如果需要提供其他反馈或文件以进行澄清,请告诉我。

非常感谢您的帮助。希望这很简单,我只是犯了一个愚蠢的错误。

0 个答案:

没有答案