代码之家  ›  专栏  ›  技术社区  ›  Attila

如何用Jest和酵素模拟反应型天然开关元件的压力

  •  1
  • Attila  · 技术社区  · 7 年前

    我试图测试一个React本机组件,它基本上是 Switch

    它看起来像这样(样式和额外代码被删除):

      render() {
        return (
          <View>
            <View>
              <View>
                <Switch
                  onValueChange={() => this.onChange(!this.state.value)}
                  value={this.state.value}
                />
              </View>
            </View>
          </View>
        );
      }
    

    此组件上没有 onChange onChange公司 E true false ).

    onChange公司 方法,以便于测试压力机的动作):

      it('calls onChange with proper values when pressed', () => {
        const onChangeHandler = jest.fn();
        const wrapper = shallow(
          <Toggle />
        );
    
        wrapper.instance().onChange = onChangeHandler;
        wrapper.simulate('press');
    
    
        expect(wrapper.instance().onChange).toBeCalledWith(true);
      });
    

    但是,该测试失败,并且 onChange公司 不调用。我不确定我考试的错误在哪里。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Attila    7 年前

    我发现我不需要模拟媒体,但我可以模拟 onValueChange 取而代之的是(即当按下开关时触发的东西)。

    Switch 测试中的组件,使用 testID 我给它的道具:

    const Switch = wrapper.find('[testID="switch"]');
    

    Switch.simulate('valueChange');