React Test Utils - 执行模拟点击时不调用间谍 -
React Test Utils - Spy not called when a simulated click is performed -
我正在尝试模拟点击反应组件中的 dom 元素,并断言基于此调用间谍。这是测试的相关部分(使用 karma、mocha、chai、sinon,但我很确定这与这里无关):
const selectSpy = sinon.spy();
const component = TestUtils.renderIntoDocument(<SomeComponent onSelect={selectSpy} />);
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li'));
expect(selectSpy.called).to.be.ok;
这是反应组件:
render() {
let { title , data, onSelect } = this.props;
console.log(this.props.onSelect); // This correctly logs out the spy
return (
<div>
<ul>{data.map((row, i) => {
return <li onClick={this.handle.bind(this,row)} key={i}>{row.title}</li>; })}
</ul>
</div>
)
}
handle(row) {
this.props.onSelect(row);
}
测试运行,但结果是测试失败并显示消息 "Expected false to be truthy"。我看不出代码有什么问题 - 没有错误,我的间谍已正确通过。
还有什么我需要做的吗?
TestUtils.Simulate.click 需要一个 DOM 元素,但是 scryRenderedDOMComponentsWithTag returns 一个 DOM 元素的数组。
尝试改变
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li'));
至
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li')[0]);
我正在尝试模拟点击反应组件中的 dom 元素,并断言基于此调用间谍。这是测试的相关部分(使用 karma、mocha、chai、sinon,但我很确定这与这里无关):
const selectSpy = sinon.spy();
const component = TestUtils.renderIntoDocument(<SomeComponent onSelect={selectSpy} />);
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li'));
expect(selectSpy.called).to.be.ok;
这是反应组件:
render() {
let { title , data, onSelect } = this.props;
console.log(this.props.onSelect); // This correctly logs out the spy
return (
<div>
<ul>{data.map((row, i) => {
return <li onClick={this.handle.bind(this,row)} key={i}>{row.title}</li>; })}
</ul>
</div>
)
}
handle(row) {
this.props.onSelect(row);
}
测试运行,但结果是测试失败并显示消息 "Expected false to be truthy"。我看不出代码有什么问题 - 没有错误,我的间谍已正确通过。 还有什么我需要做的吗?
TestUtils.Simulate.click 需要一个 DOM 元素,但是 scryRenderedDOMComponentsWithTag returns 一个 DOM 元素的数组。
尝试改变
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li'));
至
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li')[0]);