开玩笑模拟不显示文本框上的文本

时间:2019-04-10 08:34:11

标签: reactjs jestjs enzyme

这是我的测试脚本,用于使用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”)。

请让我知道是否可以提供更多详细信息。

1 个答案:

答案 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');