如何模拟用于 react-i18next useTranslation 钩子的 Jest 函数模拟的实现?

时间:2021-07-14 09:52:56

标签: javascript reactjs jestjs mocking react-i18next

我有一个相当简单的组件,它使用 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 值。

我不确定我在这里做错了什么。任何人都可以透露一些信息吗?

0 个答案:

没有答案