我有下面这个嘲笑react-i18 next的笑话。
jest.mock('react-i18next', () => ({
useTranslation: () => {
return {
t: (str: string, { ns, defaultValue }) => defaultValue,
i18n: {
changeLanguage: () => new Promise(() => {}),
},
};
},
initReactI18next: {
type: '3rdParty',
init: () => {},
},
}));
我试图通过创建一个新的文件来使它可重用,如下所示。但是导入和运行MyReusableMockFunction并不会模拟spec文件中的react-i18 next。这里会出什么问题呢有什么方法可以使这个mock可重用
import {jest} from '@jest/globals'
export const MyReusableMockFunction=()=>{
jest.mock('react-i18next', () => ({
useTranslation: () => {
return {
t: (str: string, { ns, defaultValue }) => defaultValue,
i18n: {
changeLanguage: () => new Promise(() => {}),
},
};
},
initReactI18next: {
type: '3rdParty',
init: () => {},
},
}));
}
1条答案
按热度按时间mm5n2pyu1#
我假设你想在全局上模拟i18 n。最简单的方法是将其添加到jest.setup.js文件中。然后在所有测试中模拟它(我们使用i18 next而不是react-i18 next,所以实际的模拟可能会有所不同):
如果出于某种原因不想在testFile中使用它,可以取消模拟:
这里也是一个关于使用mock doMock unmock和dontMock进行提升的有趣答案:Difference between jest.mock and jest.doMock