Javascript Jest从文件调用默认模拟

Javascript Jest从文件调用默认模拟,javascript,reactjs,unit-testing,jestjs,Javascript,Reactjs,Unit Testing,Jestjs,我的测试中有以下代码: //app.test.js jest.mock('notistack', () => ({ useSnackbar: jest.fn(), })); jest .spyOn(notistack, 'useSnackbar') .mockImplementation(() => ({ enqueueSnackbar })); 如何将此函数移动到单个文件?我所有的测试都包含相同的函数,我认为复制粘贴这段代码是多余的。我已经尝试将此文件移动到其他文件

我的测试中有以下代码:

//app.test.js

jest.mock('notistack', () => ({
  useSnackbar: jest.fn(),
}));
jest
  .spyOn(notistack, 'useSnackbar')
  .mockImplementation(() => ({ enqueueSnackbar }));
如何将此函数移动到单个文件?我所有的测试都包含相同的函数,我认为复制粘贴这段代码是多余的。我已经尝试将此文件移动到其他文件并生成函数,以便导入它

// helper.js
export function snackbar() {
  jest.mock('notistack', () => ({
    useSnackbar: jest.fn(),
  }));
  jest
    .spyOn(notistack, 'useSnackbar')
    .mockImplementation(() => ({ enqueueSnackbar }));
}

// app.test.js
import {snackbar} from 'helper.js';

snackbar();
// othercode for testing;
但每次我运行它时,它总是返回我
无法监视原始值;未定义的给定值

我怎样才能正确地称呼它呢?

请看一下即时文档

您可以创建一个名为
\uuuuu mocks\uuuu
的文件夹,并复制要在其中模拟的模块

例如,我有一个main.js文件,其中包含:

let{Chance}=require(“Chance”);
让机会来吧;
函数createUser(){
返回{
id:chance.guid(),
name:chance.name(),
年龄:偶然。年龄(),
};
}
module.exports={createUser};
我创建了一个main.test.js文件,其中包含:

let{createUser}=require(“./main”);
测试(“创建新用户”,()=>{
让scenario=createUser();
expect(场景)。toMatchObject({
id:“zxcv”,
姓名:"富",,
年龄:20,,
});
});
现在,我可以在
\uuuumocks\uuuuu/chance.js
中创建一个具有相同签名的文件来模拟我的模块
chance

let chance={};
chance.chance=函数(){
返回{
guid:()=>“zxcv”,
名称:()=>“Foo”,
年龄:()=>20岁,
};
};
module.exports=机会;
现在,您测试的每个需要/import
chance
的文件在默认情况下都将使用此模拟