Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React JS中,如何对容器中的函数进行单元测试?_Javascript_Reactjs_Unit Testing_Jestjs_Enzyme - Fatal编程技术网

Javascript 在React JS中,如何对容器中的函数进行单元测试?

Javascript 在React JS中,如何对容器中的函数进行单元测试?,javascript,reactjs,unit-testing,jestjs,enzyme,Javascript,Reactjs,Unit Testing,Jestjs,Enzyme,我试图模拟一个按钮的点击,并根据点击测试发生了什么。我试着模仿这个函数。但是没有起作用。我们如何测试函数内部的语句 我试着模拟一个函数,看看它是否被调用过。但我总是不调用mock函数 updateSelect =(e, model) => { window.alert('test'); const value = e.type === "keyup" ? e.target.parentNode.childNodes[2].innerText : e.target.

我试图模拟一个按钮的点击,并根据点击测试发生了什么。我试着模仿这个函数。但是没有起作用。我们如何测试函数内部的语句

我试着模拟一个函数,看看它是否被调用过。但我总是不调用mock函数

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>
updateSelect=(e,model)=>{
窗口警报(“测试”);
常量值=e.type==“keyup”?
e、 target.parentNode.childNodes[2]。innerText:e.target.innerText;
如果(!isEmpty(值)){
this.setState({text:value});
this.props.returnedValue({name:model,value});
}
}
this.updateSelect(e,model)}>单击

我希望要么调用函数,要么至少执行函数中的几个语句

您不能模拟组件内部的函数。您必须按类名或元素获取元素并模拟单击事件。在模拟click事件时,确保您正在传递这2个参数(模拟2个参数并传递它)。希望您使用的是酶和Jest/Mocha。供你参考


此外,在断言中,检查函数的预期输出(状态中的值等),不检查函数是否被调用。

如果要进行单元测试,应该使用一些单元测试库,您可以查看Ezyme或react测试库。看起来您正在尝试测试实现细节。也许你应该考虑改变方法,而不是解决这个特殊的问题。这里有一篇文章开始