这是我的测试脚本,用于使用Jest / Enzyme测试“ SearchBox”组件-
test('searchbox input!',()=>{
const wrapper=global.mount(<SearchBox onTextChangedFunc={dummyFunction}></SearchBox>)
const textBox=wrapper.find('#inputText')
textBox.simulate('change',{target:{value:'p12346997'}})
wrapper.update();
console.log(wrapper.debug());
})
这是dummyFunction-
function dummyFunction(e)
{
}
我不知道为什么最后一行的console.log不能显示更新的文本。这就是我在控制台上得到的-
<SearchBox onTextChangedFunc={[Function: dummyFunction]}>
<div className="textBoxContainer" style={{...}}>
<input id="inputText" className="customTextbox" required={true} onChange={[Function: dummyFunction]} onBlur={[undefined]} />
<label className="lbl" name="placeholder_label" onClick={[Function: bound labelClicked]} />
<label id="inputError" className="err" />
</div>
我希望在控制台日志中看到文本“ p12346997 ”作为输入值(ID为“ inputText”)。
请让我知道是否可以提供更多详细信息。
答案 0 :(得分:0)
您将其绑定到一个空函数,此处您可以做的就是
expect(dummyFunction).toHaveBeenCalled();
这样做的原因是,我猜您具有属性value={this.state.customTextBox}
,该属性会更新状态值,然后将其绑定到输入。因此,为了了解这一点,我将提出建议。您要么希望已经用该对象调用了dummyFunction
const dummyFunction = jest.fn();
expect(dummyFunction).toHaveBeenCalledWith({target:{value:'p12346997'}});
或者如果您要将值与状态绑定,只需检查处于状态的对象是否具有该值:
expect(wrapper.state().myInput).toBe('p12346997');