2016-03-22 18 views
0

私はリアクションコンポーネント内のdom要素をクリックしてシミュレートしようとしており、これに基づいてスパイが呼び出されると主張しています。ここでは、テストの関連部分は(カルマ、モカ、チャイ、sinonを使用しますが、私はそれがここには無関係だかなり確信している)だ:React Test Utils - シミュレートされたクリックが実行されたときにスパイが呼び出されない -

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); 
} 

テストラン:

const selectSpy = sinon.spy(); 
const component = TestUtils.renderIntoDocument(<SomeComponent onSelect={selectSpy} />); 
TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li')); 
expect(selectSpy.called).to.be.ok; 

、ここでは反応するコンポーネントです結果は、 "真実であると期待される"というメッセージで失敗したテストです。私はコードで間違ったことを見ることはできません。エラーはなく、私のスパイは正しく渡されます。 私は何かする必要がありますか?

答えて

1

TestUtils.Simulate.clickはDOM要素を必要としますが、scryRenderedDOMComponentsWithTagはDOM要素の配列を返します。

はそれだそれ

TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li')[0]); 
+0

TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(component, 'li')); 

を変更してみてください。本当にありがとう –

関連する問題