我正在构建一个大量使用国际化的系统,所以我将我的intl对象放入上下文中。但是,我无法弄清楚如何在测试时模拟上下文。
为了完成,这是我的intl提供者的本质:
export default class Intl extends Component {
getChildContext() {
return {
intl: {
//some stuffs
}
};
}
static childContextTypes = {
intl: React.PropTypes.object.isRequired
};
constructor(props, context) {
super(props, context);
this.intl = props.intl;
}
render() {
let {
children
} = this.props;
return (Children.only(children));
}
};
我尝试了两种方法来确保我的对象在测试时具有intl:
扩大搜索我的intl对象,这很痛苦
const intl = this.context.intl || this.props.intl
将组件包装在提供程序中以进行测试。这会导致反应测试出现问题,因为它只渲染一层JSX
<Intl> <SomeComponent /> <Intl>
在这些场景中真的没有办法注入Context吗?
由于