一段时间以来,我一直在尝试寻找类似问题的答案,但似乎无济于事。我当前的测试用例是:
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()无效。
在此先感谢您提供任何可能的解决方案或指南。