Проверьте каждый метод: использование Jest / энзима для REACT JS - PullRequest
0 голосов
/ 29 января 2019

Как я могу реализовать правильный модульный тест для обоих методов.Я попытался выполнить несколько вещей, но я не думаю, что вызов метода правильный путь

 componentDidMount () {
this.setState({
  defaultData: this.props.defaultData
})
}

 componentWillReceiveProps(nextProps){
this.setState({
  defaultData: nextProps.defaultData
})

}

Могу ли я реализовать что-то в этом духе для вызова методов, например?Тест в данный момент проходит, но я не думаю, что проверяет метод

 it (' ComponentWillReceiveProps : should return correct', () => {
  const wrapper = shallow(<Component {...baseProps } />);  
  wrapper.setState({test: 'test'});
  expect(wrapper.instance().componentWillReceiveProps('test')).toEqual();
});

1 Ответ

0 голосов
/ 29 января 2019

Я бы не рекомендовал поверхностное тестирование, но вот пример:

...
componentWillMount() {
    this.logUserId(this.props.userId);
}
componentWillReceiveProps(nextProps) {
    if (this.props.userId !== nextProps.userId) {
        this.logUserId(nextProps.userId);
    }
}
logUserId(userId) {
    console.log(userId);
}
...

import SomeComponent from ‘./SomeComponent’;
import { shallow } from ‘enzyme’;
describe('componentWillReceiveProps()', () => {
    it('call logUserId once', () => {
        const logUserId =
           sinon.stub(SomeComponent.prototype, ‘logUserId’);
        let userId = '123';
        const component = shallow(<SomeComponent userId={userId}/>;
// resetting call count from componentWillMount()
        logUserId.reset();
userId = '456';
        // triggers componentWillReceiveProps
        component.setProps({ userId });
// PASS!
        expect(logUserId).to.be.calledOnce.and.calledWith(userId); 
    })
}) 

взято из ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...