Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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 酶';s simulate()不更改onChange事件的输出_Javascript_Reactjs_Enzyme_Jestjs - Fatal编程技术网

Javascript 酶';s simulate()不更改onChange事件的输出

Javascript 酶';s simulate()不更改onChange事件的输出,javascript,reactjs,enzyme,jestjs,Javascript,Reactjs,Enzyme,Jestjs,我有这个组件和一些测试: 从“React”导入React; 从“道具类型”导入道具类型 function SubList (props) { var subways = ['', '1', '2', '3', '4', '5', '6', 'S', 'A', 'C', 'E', 'B', 'D', 'F', 'M', 'N', 'Q', 'R', 'L', 'G'] return ( <select onChange={props.onSubSel

我有这个组件和一些测试:

从“React”导入React; 从“道具类型”导入道具类型

function SubList (props) {
    var subways = ['', '1', '2', '3', '4', '5', '6', 
    'S', 'A', 'C', 'E', 'B', 'D', 'F', 'M', 'N', 'Q', 'R', 'L', 'G']
    return (
        <select onChange={props.onSubSelect}>
            {
                subways.map(subway =>
                    <option key={subway}>
                        {subway}
                    </option>
                )
            }
        </select>
    )
}
SubList.PropTypes = {
    onSubSelect: React.PropTypes.func.isRequired
};

export default SubList;

您正在使用
“单击”
进行模拟。相反,请尝试以下方法:


wrapper.find('select').simulate('change',1)

您正在使用
“单击”
进行模拟。相反,请尝试以下方法:


wrapper.find('select').simulate('change',1)

@patrick是正确的,我对此感到困惑,最初使用了不同的事件类型,但正确的是change

wrapper.find('select').simulate('change', { target: { value: '1' } });
在组件中,确保为每个选项设置值属性

<select className="form-control" id="select-box" name="select-box" 
        onChange={(e) => this.handleChange(e.target.value)}>
          <option>Select an option</option>
          {
            this.props.options.map((o, index) => {
              return (
                <option key={index} value={o}>
                  {o}
                </option>
              );
            })
          }
</select>
this.handleChange(e.target.value)}>
选择一个选项
{
this.props.options.map((o,index)=>{
返回(
{o}
);
})
}

@patrick是正确的,我对此感到困惑,最初使用了不同的事件类型,但正确的是change

wrapper.find('select').simulate('change', { target: { value: '1' } });
在组件中,确保为每个选项设置值属性

<select className="form-control" id="select-box" name="select-box" 
        onChange={(e) => this.handleChange(e.target.value)}>
          <option>Select an option</option>
          {
            this.props.options.map((o, index) => {
              return (
                <option key={index} value={o}>
                  {o}
                </option>
              );
            })
          }
</select>
this.handleChange(e.target.value)}>
选择一个选项
{
this.props.options.map((o,index)=>{
返回(
{o}
);
})
}

我发现以下变量正在工作:

wrapper.find('select').simulate('change', { subway: '1' });

我发现以下变体有效:

wrapper.find('select').simulate('change', { subway: '1' });

现在测试将不运行,它告诉我前面的括号值是一个意外标记?我缺少一个
。无处尝试更改后出现的错误:
● 单击“选项”时应调用“props.onSubSelect”期望(已接收)。toEqual(预期)期望值等于:“1”已接收:{“target”:{“value”:“hello”}差异:比较两种不同类型的值。预期为字符串,但收到了对象。
我认为现在的问题在某种程度上是不言自明的,但尽管如此,我已经更新了答案。现在测试不会运行,它告诉我值之前的前括号是意外标记?我缺少一个
。无处尝试更改后出现的错误:
● 单击“选项”时应调用“props.onSubSelect”期望(已接收)。toEqual(预期)期望值等于:“1”已接收:{“target”:{“value”:“hello”}差异:比较两种不同类型的值。预期为字符串,但收到了对象。
我认为现在的问题在某种程度上是不言自明的,但尽管如此,我已经更新了答案。