2015-09-15 1 views
0

Использования Мокко, карму и React тестовых инструментов, чтобы проверить следующую простую функцию:тестирования текстовых значений в React

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> 

Есть хороший способ проверить значение текста внутри основного пролета? Я ищу что-то эквивалентное .val() или .text() в jQuery.

+1

'TestUtils.findRenderedDOMComponentWithClass ('ToDo-счетчик'). GetDOMNode(). TextContent' –

+0

что сделал это! Благодаря! – fox

+1

Не связано с вашим вопросом, но для выполнения условных множественных чисел вы должны делать 'const itemWord = incompleteCount! == 0? 'item': 'items'; ' –

ответ

1

Используя TestUtils, входящий в комплект поставки React, вы можете извлечь фактический узел DOM и использовать свойство .textContent, чтобы получить текст.

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

[getDOMNode] (https://facebook.github.io/react/docs/component-api.html#getdomnode) устарел от кстати. Это не 'React.findDOMNode (компонент)' –

+0

Вы правы, сэр! Благодаря! –

Смежные вопросы