【问题标题】:vitest crypto.randomUUID() is not a functionvitest crypto.randomUUID() 不是函数
【发布时间】:2023-01-13 21:19:56
【问题描述】:

vite.config.ts

import { sveltekit } from '@sveltejs/kit/vite';

const config = {
    plugins: [sveltekit()],
    test: {
        include: ['**/*.spec.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
        environment: 'jsdom',
        globals: true,
        setupFiles: 'src/setupTests.ts'
    }
};

export default config;

src/setupTests.ts

import '@testing-library/jest-dom/extend-expect';

我的组件.svelte

onMount(() => {
    postElementId = crypto.randomUUID();
    ...
});

错误

TypeError: crypto.randomUUID is not a function

我有一个使用加密 api 创建随机 id 并按预期工作的组件,但是当我想测试它时,每次我都会弹出这个错误,感谢任何帮助!

【问题讨论】:

    标签: javascript node.js testing svelte vitest


    【解决方案1】:

    只是检查一下,您是否:

    import crypto from 'node:crypto';

    在某一点?

    【讨论】:

    • 不,我使用的是内置 API :)
    • 是的,environment: 'jsdom'表示浏览器,不是nodejs环境。我也在经历这个。
    • 是的,这里也一样:(
    【解决方案2】:

    我最严重的错误是window.crypto.randomUUID() is not a function

    所以,我在 vite.config.js 中添加了 setupFiles

    test: {
        setupFiles: [
            './test/_setup/globalSetup.js'
        ],
    ...
    

    然后,在 globalSetup.js 文件中,我添加了这两行:

    import {randomUUID} from 'node:crypto';
    window.crypto.randomUUID = randomUUID;
    

    它似乎已经成功了。

    【讨论】:

      猜你喜欢
      • 2022-10-24
      • 2022-07-04
      • 2023-02-07
      • 2023-01-04
      • 2022-07-25
      • 2022-10-25
      • 2017-05-06
      • 2019-12-20
      • 1970-01-01
      相关资源
      最近更新 更多