TypeError: ShallowWrapper :: state ("isOpen") требует, чтобы `state` не был` null` или `undefined` - PullRequest
0 голосов
/ 12 февраля 2019

Я пытался запустить модульный тест, но постоянно получаю эту ошибку:

Ошибка типа: ShallowWrapper :: state ("isOpen") требует, чтобы state не было null или undefined

Я видел нечто подобное и смог это исправить - но я не вижу, где это не так в данный момент

Использование React JS - JEST AND ENZYME

here is the main file js


         closeModal = () => {
    //If close qfmodal, set modalvalues back to values
    let quickfilterModalValues = 
  Object.assign({},this.state.quickfilterValues);
    this.setState({
      selectedRecon_UID: null,
      refreshModalOpen: false, 
      descriptionModalOpen: false, 
      quickFilterModalOpen: false,

       <Modal isOpen={this.state.quickFilterModalOpen} style={descriptionModalStyle}>
      <div>
        <div className='fullmodal'>
          <div className='sidemodal_addnew_x' onClick={this.closeModal}>
            <FontAwesome name='xbutton' className='fa-times' />
          </div>
        </div>    


   Here is the file.test.js  

Я не включил здесь метод description и beforeEach () -

  // defining this.props
  const baseProps = { 
  onClick,
  isOpen:false,
  }

 it("renders a modal portal", () => {
  const isOpen = wrapper.state("isOpen");
  const modalPortal = wrapper.find("div.fullmodal");
  expect(isOpen).toBeTruthy;
  expect(modalPortal).toHaveLength(1);
  expect(toJson(wrapper)).toMatchSnapshot();
});

Я ожидаю, что мой снимок также отразит MODAL

1 Ответ

0 голосов
/ 14 февраля 2019

Эта ошибка вызвана тем, что state в компоненте не определен.

Если у вас есть state, определенный в конструкторе класса (или как свойство экземпляра), эта ошибка не произойдет.

Пример:

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {/* initial state */}
  }
}

Вы можете отладить, было ли в вашем тесте определено состояние с использованием функции instance фермента:

console.log(wrapper.instance().state);

Если это распечатывается null или undefined, вы неправильно определяете объект состояния для экземпляра.

Если это возвращает действительный объект, вы не должны видеть ошибку ShallowWrapper::state("isOpen").

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