Можно ли протестировать компонент Reactjs без его рендеринга? - PullRequest
0 голосов
/ 11 июня 2018

В симуляции физики я должен установить точки данных в 1-м классе.После этого во 2-м классе.Я нажму и установлю конфигурацию на всех точках останова.

Всего.У меня есть 2 формы.Первая форма будет устанавливать количество баллов во второй форме.

export const setBreakPointList = (numberOfBreakPoints) => {
  //This will be a state for component
  let tmp = [];
  for (let i = 1; i <= numberOfBreakPoints; i++) {
    tmp.push({
      title: stringifyNumber(i),
      breakPointNumber: i,
      content: <ParticleHeatForm breakPointNumber={i}/>
    })
  }
  return tmp;
};


export const ControlParametersReducer = (state = {
  numberOfBreakPoints: Number(NUMBER_OF_TIME_BREAK_POINTS_DEFAULT),
  maximumRunTime: Number(MAXIMUM_RUNTIME_DEFAULT),
  steps: setBreakPointList(Number(NUMBER_OF_TIME_BREAK_POINTS_DEFAULT))
}, action) => {
  switch (action.type) {
    case NUMBER_OF_BREAK_POINTS_CHANGED:
      return {
        numberOfBreakPoints: action.payload.value,
        maximumRunTime: state.maximumRunTime,
        steps: setBreakPointList(action.payload.value)
      };
    case MAXIMUM_RUNTIME_CHANGED:
      return {
        numberOfBreakPoints: state.numberOfBreakPoints,
        maximumRunTime: action.payload.value,
        steps: state.steps
      };
    default:
      return state;
  }
};

test.js

it('ControlParametersReducer numberOfBreakPoints must change', () => {
  const stateBefore = {
    numberOfBreakPoints: Number(NUMBER_OF_TIME_BREAK_POINTS_DEFAULT),
    maximumRunTime: Number(MAXIMUM_RUNTIME_DEFAULT),
    steps: setBreakPointList(Number(NUMBER_OF_TIME_BREAK_POINTS_DEFAULT))
  };
  const stateAfter = {
    numberOfBreakPoints: 10,
    maximumRunTime: Number(MAXIMUM_RUNTIME_DEFAULT),
    steps: setBreakPointList(Number(NUMBER_OF_TIME_BREAK_POINTS_DEFAULT))
  };
  const action = {
    type: NUMBER_OF_BREAK_POINTS_CHANGED,
    payload: {value: 10}
  };

  deepFreeze(stateBefore);
  deepFreeze(stateAfter);

  expect(
    ControlParametersReducer(stateBefore, action)
  ).toEqual(stateAfter);
});

Я знаю, что reducer должен быть функционалом.Поэтому я следую deepFreeze как учебник

Я прочитал это и это .Похоже, мне нужно сначала отобразить их.

Вопрос:
Действительно ли мне нужно сначала отобразить компонент, а затем выполнить утверждение?

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