之前的玩笑所有与之前的每一种意想不到的行为



我有一个非常简单的测试,基本上我试图模拟i18next的t函数:

import { t } from 'i18next';
import { changeDocumentTitle } from './utils';
jest.mock('i18next');
const tMock = (key: string): string => key;
beforeAll(() => {
(t as jest.Mock).mockImplementation(tMock);
});
test('test changeDocumentTitle function', () => {
changeDocumentTitle('string');
expect(document.title).toEqual(tMock('string'));
});

和CCD_ 1实现:

import { t } from 'i18next';
export const changeDocumentTitle = (titleKey: string): void => {
document.title = t(`${titleKey}`);
};

不幸的是,测试失败了。但如果我把它从beforeAll改为beforeEach,一切都很好。怎么了?为什么beforeAll没有应用与beforeEach不同的mock?

提前谢谢。

由于react脚本v4,它添加了默认的jest-configresetMocks: true:https://github.com/facebook/create-react-app/releases/tag/v4.0.0

这意味着在使用beforeAll运行测试之前,将重置mock。我建议保留resetMocks: true,因为测试应该隔离。

最新更新