测试会对使用上下文

时间:2016-03-24 09:18:24

标签: javascript reactjs react-jsx

我正在构建一个大量使用国际化的系统,所以我将我的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:

  1. 扩大搜索我的intl对象,这很痛苦

    const intl = this.context.intl || this.props.intl

  2. 将组件包装在提供程序中以进行测试。这会导致反应测试出现问题,因为它只渲染一层JSX

  3.     <Intl>
          <SomeComponent />
        <Intl>
    

    在这些场景中真的没有办法注入Context吗?

    由于

0 个答案:

没有答案