Javascript 模拟-意味着在1个节点上运行。改为找到0

Javascript 模拟-意味着在1个节点上运行。改为找到0,javascript,reactjs,onchange,Javascript,Reactjs,Onchange,无法找出onChange未被调用的原因。我添加了一个id,但它找不到元素 File.test.js it("should call onChange event on renderToDropdown ", () => { baseProps.onChange.mockClear(); wrapper.setState({ toStatusList:[{ StatusID:"", Name:"", }], select

无法找出onChange未被调用的原因。我添加了一个id,但它找不到元素

File.test.js

it("should call onChange event  on renderToDropdown ", () => {
    baseProps.onChange.mockClear();
    wrapper.setState({
    toStatusList:[{
        StatusID:"",
        Name:"",
    }],
   selectedTo:'password test 1'
    });
   wrapper.update() 
   wrapper.find('select[id="testonchange"]').simulate('change',{target: {value: 'password test 1'}} )
 });
还尝试了以下方法:

wrapper.find('#testonchange').simulate('change',{target: {value: 'password test 1'}} )
File.js

renderToDropdown = () => {
let list = this.state.toStatusList;
let result = list.map((item) => {
  return <option value={item.StatusID}>{item.Name}</option>
})
result.push(<option value='default' disabled>Select...</option>)
return (
  <select value={this.state.selectedTo} id='testonchange' onChange={(e) => {this.handleToChange(e);}}>
    {result}
  </select>
)
}

handleToChange = (e) => {
this.setState({selectedTo: e.target.value});
renderToDropdown=()=>{
let list=this.state.toStatusList;
让结果=list.map((项)=>{
返回{item.Name}
})
结果。按下(选择…)
返回(
{this.handleToChange(e);}>
{result}
)
}
handleToChange=(e)=>{
this.setState({selectedTo:e.target.value});

对React JS使用Jest和Ezyme

这里的包装器是什么?空实例?浅层渲染或装载?

尝试:

wrapper.find('select').prop('onChange')({value: 'password test 1'});

浅包装我以前尝试过这个方法,测试通过了,但它不影响它的覆盖率。有什么原因吗?还有:wrapper.find('select')。simulate('change',{target:{value:'password test'});也可以工作它确实会影响代码覆盖率,因为它会触发onChange方法,并通过函数中写入的所有语句和分支。但它不是..数字没有变化。我使用它运行,而不使用此代码。数字是它不影响覆盖率的唯一原因??