【发布时间】:2019-07-05 09:50:12
【问题描述】:
我正在尝试用 jest 进行完整的伊斯坦布尔覆盖率测试。目前我有一个几乎所有测试过的组件,但是有一个 handleSubmit 函数,我在其中进行调度接收表单事件数据,当我运行测试时它告诉我
TypeError: Cannot read property 'value' of undefined
10 | payload: {
11 | name: name.value,
> 12 | item: item.value,
| ^
13 | status: status.value }
14 | })
15 | }
我正在加载一个 mockstore,安装了所有组件,所有组件都经过测试,但提交仍然失败。我的测试功能很简单:
it('testing submit', () => {
const form = component.find(`[data-test="submit"]`).first()
form.simulate('submit')
... and continues expecting some existences, but there aren't problems there
我已经试过了:enzyme simulate submit form, Cannot read property 'value' of undefined
并尝试解析模拟动作中的事件值...
完整的模块代码是……
class Filters extends Component {
handleSubmit = event => {
event.preventDefault()
const {name, items, status} = event.target;
this.props.dispatch({
type: 'SEARCH_PLAYER',
payload: {
name: name.value,
item: item.value,
status: status.value }
})
}
render() {
return(
<div>
<form onSubmit={this.handleSubmit} data-test="submit">
<div className="form-group col-md-12 text-center"> ...
另一个真正疯狂的事情是我的测试识别“event.target.name.value”而不是项目和状态。事实上,如果我从调度中删除项目和状态,测试就会成功运行。
【问题讨论】:
标签: reactjs unit-testing redux jestjs enzyme