投降了。我不知道如何让我的模块使用名为exportuuidv4的CommonJS的模拟。我尝试过使用jest.mock()、jest.spyOn(),只设置等于jest.fn()的函数,如下所示(这是我在其他测试中通常成功使用的方法),但这些方法都不适合我。
下面是上面提到的最后一次测试尝试的实质:
// 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();
});
});// myModule.js
const { v4: uuidv4 } = require('uuid');
async function someFunction() {
const id = uuidv4();
// ...do stuff with 'id'
}
module.exports = {someFunction};不管我尝试过哪种方法(上面提到的3种方法),我都无法让myModule.someFunction使用我在uuidv4测试中创建的模拟。
有人知道如何在不使用手动模拟的情况下做到这一点吗?
谢谢你的帮助!
发布于 2022-07-21 01:28:57
我能够利用这里找到的答案来完成这项工作。
https://ilikekillnerds.com/2020/04/how-to-mock-uuid-in-jest/
我要为自己做的一件事是这件事成功了.
jest.mock("../../../../../../functions/api/node_modules/uuid", () => ({ v4: () => "2306beb3-8833-40a5-b3f4-a8daab755251" }));...but这个没有..。
const rootDir = "../../../../../..";
const uuidModule = `${rootDir}/functions/api/node_modules/uuid`;
jest.doMock(uuidModule, () => ({ v4: () => "2306beb3-8833-40a5-b3f4-a8daab755251" }));https://stackoverflow.com/questions/73058801
复制相似问题