Шутка/Фермент | Не удалось разобрать data-test="basic-render"

У меня есть два метода рендеринга в моем компоненте React. Все зависит от того, что возвращает эта функция.

  validateUserExists = username =>
    listUsers().then(({ data }) => {
      if (Array.isArray(data) && data.includes(username)) {
        return true;
      }
      return false;
    });

Он берет имя пользователя из API и, если оно существует в listUsers(), возвращает true или false. В зависимости от этого компонент отображает либо NoUser, либо BasicRender.

Вот тест:

  describe('User does not exist', () => {
    let match;
    let validateUserExistsFn;
    let fetchUserFn;
    beforeEach(() => {
      match = { params: { username: 'testUser' }, isExact: true, path: '', url: '' };
      validateUserExistsFn = jest.fn();
      fetchUserFn = jest.fn();
    });

    it('should render NoResource Component when user', () => {
      const wrapper = shallow(
        <UserDetailsScreen
          match = {match}
          fetchUsers = {fetchUserFn}
          validateUserExists = {validateUserExistsFn}
        />,
        {
          disableLifecycleMethods: true
        }
      );
      console.info(wrapper.debug());
      const BasicRender = wrapper.find(`[data-test = "basic-render]`);
      expect(BasicRender).toHaveLength(1);
    });

Вот код компонента:

class UserDetailsScreen extends Component {
  static propTypes = {
    match: PropTypes.shape({
      isExact: PropTypes.bool,
      params: PropTypes.object,
      path: PropTypes.string,
      url: PropTypes.string
    }),
    // eslint-disable-next-line react/forbid-prop-types
    history: PropTypes.object,
    label: PropTypes.string,
    actualValue: PropTypes.string,
    callBack: PropTypes.func
  };

  state = {
    user: {}
  };

  componentDidMount() {
    this.fetchUser();
  }

  getUserUsername = () => {
    const { match } = this.props;
    const { params } = match;
    return params.username;
  };

  fetchUser = () => {
    getUser(this.getUserUsername()).then(username => {
      this.setState({
        user: username.data
      });
    });
  };

  validateUserExists = username =>
    listUsers().then(({ data }) => {
      if (Array.isArray(data) && data.includes(username)) {
        return true;
      }
      return false;
    });

  redirectToUsers = () => {
    const { history } = this.props;
    // eslint-disable-next-line no-restricted-globals
    history.push('/management/users');
  };

  renderNoResourceComponent = () => (
    <div className = "center-block" data-test = "no-resource-component">
      <NoResource
        icon = "exclamation-triangle"
        title = "Ooops"
        primaryBtn = "Back to Users"
        primaryCallback = {this.redirectToUsers}
      >
        <span className = "font-weight-bold">404: User does not exist</span>
        <br />
        Please choose from one in the usersLists
      </NoResource>
    </div>
  );

  render() {
    const { user } = this.state;
    const { callBack, actualValue, label } = this.props;
    return (
      <div className = "container-fluid">
          </Fragment>
        ) : (
            <div className = "container-fluid">
              {this.renderNoResourceComponent()}
            </div>
          )}
      </div>
    );
  }
}

export default withRouter(UserDetailsScreen);

А вот что такое wrapper.debug()возвращается, которого я никогда раньше не видел:

      <Route>
        [function children]
      </Route>

В процессе я узнал, что мне нужно обернуть свой тест моим BrowserRouter из react-router-dom. Что я и сделал, и он напечатал мне это при отладке:

    <Router history = {{...}}>
        <UserDetailsScreen match = {{...}} fetchUsers = {[Function: mockConstructor]} />
        };
      </Router>

После этого не повезло. я получаю ту же ошибку, снова и снова.

Я имею в виду, что какой бы атрибут проверки данных я ни искал, он всегда возвращает это. Я занимаюсь этим более 5 часов. Может ли кто-нибудь помочь мне решить эту проблему? Спасибо!!

По крайней мере, вам не хватает цитаты в [data-test = "basic-render]

fhollste 14.03.2019 08:33

Да, сделал это некоторое время назад, извините, у меня был готов вопрос несколько часов назад.. Это не меняет того факта, что вещь не отображается... Просто вторая вещь, которую я опубликовал.. Спасибо, хотя..

user10104341 14.03.2019 08:35

Похоже, вам нужно сделать Полный рендеринг DOM, используя mount вместо использования shallow

Brian Adams 14.03.2019 19:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
381
0

Другие вопросы по теме