【发布时间】:2019-03-30 18:56:20
【问题描述】:
我正在测试一个导入 Javascript 文件的 vue 文件。
//unlockWallet.worker.js
import { Wallet, Configs } from '@/helpers';
function create(password) {
const createdWallet = {};
const wallet = new Wallet.generate();
createdWallet.walletJson = wallet.toV3(password, {
kdf: Configs.wallet.kdf,
n: Configs.wallet.n
});
createdWallet.name = wallet.getV3Filename();
return createdWallet;
}
onmessage = function(event) {
if (event.data.type === 'createWallet') {
const workerResult = create(event.data.data[0]);
postMessage(workerResult);
}
};
和 PasswordModal.vue 我像这样导入 unlockWallet.worker.js 文件。
import Worker from '@/workers/unlockWallet.worker.js'
methods: {
unlockWallet() {
const worker = new Worker();
const self = this;
worker.postMessage({
type: 'unlockWallet',
data: [this.file, this.password]
});
worker.onmessage = function(e) {
// Regenerate the wallet since the worker only return an object instance. Not the whole wallet instance
self.$store.dispatch(
'decryptWallet',
BasicWallet.unlock({
type: 'manualPrivateKey',
manualPrivateKey: Buffer.from(e.data._privKey).toString('hex')
})
);
};
}
在 PasswordModal.spec.js 中
import {shallowMount} from '@vue/test-utils'
import PasswordModal from '@/layouts/PasswordModal.vue';
而我没有通过这个测试。
测试套件无法运行 ReferenceError: onmessage 未定义
【问题讨论】:
-
据我所知,您的
unlockWallet.worker.js文件中没有导出任何内容,因此如果您尝试导入它,它将不会被定义。 -
我已经上传了代码。如您所见,我可以导入该文件并创建 Worker 对象,但在测试中,我什至无法导入。
-
@ThomasLombart 网络工作者以这种方式工作,整个文件作为工作者处理,你不把它写成一个模块。问题出在其他地方。
标签: testing vue.js vue-component jestjs vuex