首页 > 解决方案 > 在 React JS 中,如何对容器中的函数进行单元测试?

问题描述

我正在尝试模拟单击按钮并测试基于该单击发生的情况。我尝试了模拟功能。但是没有用。我们如何测试函数内部的语句?

我尝试模拟一个函数以查看它是否已被调用。但我总是得到未调用的模拟函数

updateSelect =(e, model) => {
    window.alert('test');
    const value = e.type === "keyup" ? 
    e.target.parentNode.childNodes[2].innerText : e.target.innerText;
    if(!isEmpty(value)){
      this.setState({text: value});
      this.props.returnedValue({name : model, value});
    }
}

<button className="test" onClick={(e)=>this.updateSelect(e, model)}>Click</button>

我希望要么应该调用函数,要么必须执行函数中的至少几条语句

标签: javascriptreactjsunit-testingjestjsenzyme

解决方案


您不能模拟组件内部的函数。您必须通过类名或元素获取元素并模拟点击事件。在模拟点击事件时,请确保您传递了 2 个参数(模拟 2 个参数并传递它)。希望您使用的是 Enzyme 和 Jest/Mocha。供您参考链接

同样在断言中检查函数的预期输出(状态中的值等)并且不检查函数是否被调用。


推荐阅读