Jest Enzyme模拟价值

时间:2017-07-26 10:12:53

标签: javascript enzyme jest

我按如下方式设置了我的包装器:

const wrapper = shallow(<Uploads
      availableTemplates={[]}
      filters={{ commodity: '' }}
      actions={{
        SetFilter: (e) => { wrapper.setProps({ filters: e }); }
      }}
    />);

以下测试的目标是将'checked'的无线电值从其默认值false更改为true:

const input = wrapper.find('input').at(0);

    input.simulate('change', { target: input.props() });
    expect(wrapper.find('input').at(0).node.props.checked).toEqual(true);

不用多说,这是我的问题: 当我在这下面创建一个测试以检查无线电的默认值(应该是假的)时,我会回来。据推测,这是因为我早期将其改为真。有没有办法在每次后续测试时将输入重置为默认状态?

expect(wrapper.find('input').at(0).node.props.checked).toEqual(false);

当然,我可以将此测试移到另一个测试之上,但我很好奇为什么会发生上述情况。

1 个答案:

答案 0 :(得分:0)

上面的原因似乎是我每次都在测试包装器的相同实例。因此,当我将值更改为true时,将继续通过其余测试。为了抵消这种情况,我创建了一个getWrapper函数,我每次都调用它来获取包装器的新实例:

 if params[:search]
    @sheets = Sheet.search(params[:search]).order("created_at DESC")
  else
    @sheets = Sheet.all.order("created_at DESC")
 end

在测试中:

const getWrapper = () => {
  const wrapper = shallow(<Uploads
    availableTemplates={[]}
    filters={{ commodity: '' }}
    actions={{
      SetFilter: (e) => { wrapper.setProps({ filters: e }); }
    }}
  />);
  return wrapper;
};