Получение реквизита через HOC при монтаже в Enzyme - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь протестировать некоторый код, который использует firebase. Я реализую библиотеку firebase-mock. Проблема, с которой я сейчас сталкиваюсь, состоит в том, что большинство всех компонентов, которые я должен протестировать, получают экземпляр firebase из HOC (у меня есть класс с методами firebase, которые я использую, который предоставляется через API контекста в index.js и используется через При использовании FireFase HOC обернутый компонент будет иметь в своей базе firebase).

В этом случае код, который я пытаюсь проверить, выглядит следующим образом:

// mount.js

import React, { Component } from 'react';
import { withFirebase } from '../../components/Firebase';

class mount extends Component {
  state = {
    data: null,
  };

  ref = this.props.firebase.db.ref('/testing');

  componentDidMount() {
    // Fetch from testing ref

    this.ref.on('value', snap => {
      this.setState({ data: snap });
    });
  }

  componentWillUnmount() {
    this.ref.off('value');
  }

  render() {
    return <div />;
  }
}

export default withFirebase(mount);

В моем тестовом файле я делаю следующее:

describe('Component mount.js', () => {
  it.only('fetches', () => {
    const wrapper = mount(<Mount />);
    console.log(wrapper.prop());
    console.log(wrapper.state().data);
  });
});

Это не удалось, поскольку this.props.firebase имеет значение null. Как я мог решить эту проблему, чтобы я мог продолжить и, наконец, высмеивать вызовы Firebase, как я и собирался. Я предполагаю, что проблема в том, как использовать Context API в Enzyme, но я не уверен.

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