我在我的组件中使用i18n并将其包装在I18nextProvider中,如下所示:
const wrapper = shallow(
<I18nextProvider i18n={mockI18n}>
<Component initState={initData} />
</I18nextProvider>
);
mockI18n是:
const mockI18n = {
t(k) {
return k;
},
on() {
},
getFixedT(k) {
return (k) => k;
},
loadNamespaces(arg) {
return (arg) => arg;
}
};
当我使用浅色时这很好用。但是,我想测试一个onChange函数,所以我需要在嵌套的子组件中找到该元素并模拟click事件。浅是无法找到元素,所以我想尝试mount,但是我使用mount它会给我错误:
ReferenceError: t is not defined
16 | name="user_id"
> 17 | label={t('User ID')}
18 | type="text"
19 | value={this.state.user_id}
如何将i18n应用于子组件?或者如何测试this.props.onChange什么时候使用浅?
答案 0 :(得分:0)
我认为在组件内部,您需要在使用翻译的组件中获取t
函数。
const { t } = props;
...
只有这样你才能调用t
函数。
label={t('User ID')}