我有一个相当简单的组件,它使用 react-i18next
useTranslation
钩子。
我一直在组件测试中使用以下内容。它按预期返回第一个参数 key
作为它的返回值。
jest.mock('react-i18next', () => ({
useTranslation: () => ({ t: key => key }),
}));
接下来我想使用使用内置变量替换的翻译,此时上面的 t
函数无法提供足够的数据,因为第二个参数被忽略。所以我把它换成了一个模拟功能。
const mockTranslation = jest.fn().mockImplementation(key => key);
jest.mock('react-i18next', () => ({
useTranslation: () => ({ t: mockTranslation }),
}));
我可以确认在组件中 t
绝对是一个模拟函数。我可以在测试中确认 mockTranslation.mock.calls
正在选择所有正确的调用参数。 不使用定义的实现来返回第一个参数作为它的值。 mockTranslation.mock.results
显示了一系列值为 undefined
的返回类型。我什至尝试了基本的 jest.fn().mockReturnValue('TEST')
,但结果仍然显示 undefined
值。
我不确定我在这里做错了什么。任何人都可以透露一些信息吗?