2016-09-20 8 views
0

Am нового реагировать и пытается запустить модульное тестирование для реакции приложения с помощью шутки,React: OnChange не является функция

АРРАМИ, используя структуру потока, и я уже написал один компонент «ПОГОДУ» и перед перейдите к другому, я хотел написать тест для этого компонента и принять подход TDD.

Мой код работает отлично, но тест потерпит неудачу с этой ошибкой

TypeError: tree.props.onChange is not a function 

Код компонента погоды:

// @flow 

import React from 'react'; 
import api from '../api'; 
import weatherStore from '../stores/weatherStore'; 

//read from weather store 
let _getState =() => { 
    return {weather: weatherStore.returnWeather()}; 
}; 

export default class Weather extends React.Component { 



    constructor(proporties) { 
     super(proporties); 

     this._onChange = this._onChange.bind(this); 

     this.state = _getState(); 

    } 
    componentWillUnmount() { 
     weatherStore.removeListener('change', this._onChange); 
    } 
    componentDidMount() { 
     api.getWeather(); 
     weatherStore.on('change', this._onChange); 
    } 

    _onChange() { 
     this.setState(_getState()); 
    } 

    render() { 
     let weatherState = this.state.weather.map(weather => { 

      return <div key={weather.id} className="pull-right row"> 

         <div> 
          <span>{weather.main.temp} C</span><br /> 
         </div> 
        </div>; 
     }) 

     return <div>{weatherState}</div>; 
    } 
} 

Если тестовый код:

import React from 'react'; 
import Weather from '../js/components/Weather'; 
import renderer from 'react-test-renderer'; 

it('should render weather temp and city',()=> { 
    const component = renderer.create(
     <Weather /> 
    ); 

    let tree = component.toJSON(); 
    expect(tree).toMatchSnapshot(); 

    // manually trigger the callback 
    tree.props._onChange(); 
    // re-rendering 
    tree = component.toJSON(); 
    expect(tree).toMatchSnapshot(); 

}); 

Примечание так я использую flow static type checker всегда светит эта строка кода this._onChange = this._onChange.bind(this);

с сообщением об ошибке: свойство '_onChange' не найдено в погоде.

+0

Что вы получаете, когда 'console.log (tree)'? –

ответ

1

TypeError: tree.props.onChange is not a function

Вы пробовали обновить свой тест с:

// manually trigger the callback 
tree.props._onChange(); 

Обратите внимание на приборную.

+0

Да, я обновил те же ошибки. Я обновил ответ – user3462064

+1

Можете ли вы опубликовать результат 'console.log (JSON.stringify (tree.props, нуль, 2));' Пожалуйста, поставьте это прямо ниже ожидать (дерево) линии –

+0

Выхода {} – user3462064

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