Я пытаюсь протестировать некоторый код, который использует 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, но я не уверен.