首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Jest和CommonJS来模拟命名的导出“CommonJS”?

如何使用Jest和CommonJS来模拟命名的导出“CommonJS”?
EN

Stack Overflow用户
提问于 2022-07-20 22:33:07
回答 1查看 152关注 0票数 0

投降了。我不知道如何让我的模块使用名为exportuuidv4的CommonJS的模拟。我尝试过使用jest.mock()jest.spyOn(),只设置等于jest.fn()的函数,如下所示(这是我在其他测试中通常成功使用的方法),但这些方法都不适合我。

下面是上面提到的最后一次测试尝试的实质:

代码语言:javascript
复制
// myModule.test.js

const { v4: uuidv4 } = require('uuid');
const myModule = require('./myModule');

describe(`Tests for myModule'`, () => {
  test(`First test`, async () => {
    uuidv4 = jest.fn().mockReturnValueOnce("custom-uuid");

    await myModule.someFunction();

    expect(uuidv4).toHaveBeenCalled();
  });
});
代码语言:javascript
复制
// myModule.js

const { v4: uuidv4 } = require('uuid');

async function someFunction() {
    const id = uuidv4();
    // ...do stuff with 'id'
}

module.exports = {someFunction};

不管我尝试过哪种方法(上面提到的3种方法),我都无法让myModule.someFunction使用我在uuidv4测试中创建的模拟。

有人知道如何在不使用手动模拟的情况下做到这一点吗?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2022-07-21 01:28:57

我能够利用这里找到的答案来完成这项工作。

https://ilikekillnerds.com/2020/04/how-to-mock-uuid-in-jest/

我要为自己做的一件事是这件事成功了.

代码语言:javascript
复制
jest.mock("../../../../../../functions/api/node_modules/uuid", () => ({ v4: () => "2306beb3-8833-40a5-b3f4-a8daab755251" }));

...but这个没有..。

代码语言:javascript
复制
const rootDir = "../../../../../..";
const uuidModule = `${rootDir}/functions/api/node_modules/uuid`;
jest.doMock(uuidModule, () => ({ v4: () => "2306beb3-8833-40a5-b3f4-a8daab755251" }));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73058801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档