Тестирование React15 с ферментом и Jest - PullRequest
0 голосов
/ 01 ноября 2018

Я новичок в React и у меня возникли проблемы с тестированием. Я добавляю тесты List.test.js в самый отличный проект ученика Райана Уолша на Github: https://github.com/r-walsh/react-unit-test-practice.

Этот тест submitToDo () проходит:

Функция:

  submitToDo = text =>
      this.setState(() => ({
      toDos: [{ complete: false, text }, 
      ...this.state.toDos],
      }));

Тест:

  it('adds new ToDo to state', () => {
      const list = shallow(<List />);
      list.setState({
          toDos: [
              { complete: false, text: 'One'},
              { complete: true, text: 'Two'},
          ],
      });
      list.instance().submitToDo('Three');
      expect(list.state().toDos.length).toBe(3);
      expect(list.state().toDos[0].text).toBe('Three');

});

Тест toggleCompletion не проходит. Отладчик говорит мне, что «текст» не имеет значения при вызове toggleCompletion. Если я удалю ({}) из текстового аргумента, тест пройден, но переключение больше не работает в браузере.

Функция:

  toggleCompletion = ({text}) =>
      this.setState(({ toDos }) => ({
      toDos: toDos.map(
          toDo =>
              toDo.text === text ? { complete: 
              !toDo.complete, text } : toDo,),
   }));

Тест:

  it('toggles completion', () => {
      const list = mount(<List />);
      list.setState({
          toDos: [
              { complete: false, text: 'One'},
          ],
  });

  expect(list.state().toDos[0].complete).toBe(false);
  list.instance().toggleCompletion('One');
  // todo test fails, but this works in the browser
  expect(list.state().toDos[0].complete).toBe(true);
* *} Тысяча двадцать-одина); * * тысяча двадцать-дв
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...