反应酶测试,输入值未更新

时间:2019-11-07 15:46:11

标签: reactjs enzyme

一段时间以来,我一直在尝试寻找类似问题的答案,但似乎无济于事。我当前的测试用例是:

it("login successful", () => {
      wrapper = shallow(<LoginComponent />);

      const unameInput = wrapper.find('#uname').dive().find('#uname-input').dive();
      unameInput.simulate('change', { target: { value: '1234' } });
      console.log(unameInput.debug());
      wrapper.find('#btn').simulate('click');
});

我之所以要dive()。find(...)。dive()的原因是,我用于uname的组件是一个自定义组件,并且使用了inputRef,所以这是为了获得实际的输入标签

unameInput.debug()的日志为: <input onKeyDown={[Function: onKeyDown]} id="uname-input" type="text" name="username" value="" placeholder="Username" disabled={false} onChange={[Function: onChange]} />

如果我删除了最后一次潜水,我会得到: <s onKeyDown={[Function: onKeyDown]} name="username" type="text" id="uname-input" inputRef={{...}} onChange={[Function: onChange]} error={false} value="" placeholder="Username" disabled={false} />

单击模拟工作正常,但是无论我如何尝试更新输入值。我已经尝试过instance(),也已经尝试过.element()。value,我得到了: TypeError: Cannot add property value, object is not extensible

我尝试使用mount(),但是由于某种原因返回了重复的组件,并且添加.hostNodes()无效。

在此先感谢您提供任何可能的解决方案或指南。

0 个答案:

没有答案