2017-01-21 5 views
2

Я пытаюсь написать простой тест с помощью React and Jest.Как проверить требуемые реквизиты в реакторе

Компонент:

import React from "react"; 

class Task extends React.Component { 

    render() { 
     let onDelete = this.props.onDelete; 
     return (
       <li> 
        <div className="collapsible-header"><i className="material-icons" onClick={() => onDelete(this.props.taskId)}>delete</i>{this.props.title}</div> 
        <div className="collapsible-body"><p>{this.props.description}</p></div> 
       </li> 
       ); 
    } 
}; 

Task.propTypes = { 
    title: React.PropTypes.string.isRequired, 
    taskId: React.PropTypes.number.isRequired, 
    onDelete: React.PropTypes.func.isRequired, 
    description: React.PropTypes.string 
}; 

Task.defaultProps = { 
    description: '' 
}; 

export default Task; 

Тест

import React from 'react'; 
import Task from '../src/components/Task'; 
import renderer from 'react-test-renderer'; 

test('Task should require properties',() => { 
    const component = renderer.create(//this will give me React warnings which I would like to assert 
    <Task></Task> 
); 
}); 

Теперь я хотел бы утверждать, что title, taskId и onDelete требуется для Task компонента. Что я получу предупреждение React о том, чтобы не указывать их (или передавать разные типы).

ответ

1

Вы можете использовать шпион, чтобы узнать, было ли исключено какое-либо исключение из реакции. Многие люди используют библиотеку Sinon.js. Из документации «Контрольный шпион» - это функция, которая записывает аргументы, возвращаемое значение, значение этого и исключенного броска (если есть) для всех его вызовов ».

Существует большое решение более подробно описано здесь:

How to test React PropTypes through Jest?