Javascript 酶';s simulate()不更改onChange事件的输出
我有这个组件和一些测试: 从“React”导入React; 从“道具类型”导入道具类型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
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”}差异:比较两种不同类型的值。预期为字符串,但收到了对象。
我认为现在的问题在某种程度上是不言自明的,但尽管如此,我已经更新了答案。