2015-09-15 31 views
0

采用摩卡,因果报应,并作出反应测试工具来测试这个简单的函数:测试文本值阵营

renderTodoCount() { 
    const { incompleteCount } = this.props; 
    const itemWord = incompleteCount === 1 ? 'item' : 'items'; 

    return (
     <span className='todo-count'> 
     <strong>{incompleteCount || 'No'}</strong> {itemWord} left 
     </span> 
    ); 
} 

我分裂测试用例分成三种情况:1。incompleteCount=0,2 incompleteCount=1 ,3. incompleteCount=2

在第一种情况,我希望下面的输出(或多或少):

<span className='todo-count'> 
    <strong>No</strong> items left 
    </span> 

和将测试针对。什么其实我(从dump())看到的是:

<span class="todo-count" data-reactid=".0.0"> 
    <strong data-reactid=".0.0.0">No</strong><span data-reactid=".0.0.1"></span><span data-reactid=".0.0.2">items</span><span data-reactid=".0.0.3"> left</span> 
</span> 

有测试主跨内的文本价值的好办法?我正在寻找相当于jQuery中的.val().text()的东西。

+1

'TestUtils.findRenderedDOMComponentWithClass( '待办事项数')。getDOMNode()。textContent' –

+0

这做到了!谢谢! – fox

+1

不涉及你的问题,但要做条件复数你应该做'const itemWord = incompleteCount!== 0? 'item':'items';' –

回答

1

通过使用与React捆绑在一起的TestUtils,您可以提取实际DOM节点并使用.textContent属性获取文本。

TestUtils.findRenderedDOMComponentWithClass('todo-count').getDOMNode().textCont‌​ent 
+0

[getDOMNode](https://facebook.github.io/react/docs/component-api.html#getdomnode)已被弃用btw。它不是'React.findDOMNode(组件)' –

+0

你是对的,先生!谢谢! –