Ошибка: ReactionNativeFirebase2.default.auth не является функцией - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть компонент SignUp.js, используемый для регистрации пользователей в моем приложении.Он вдохновлен / скопирован из этого урока и основан на стартовом комплекте реактивной базы .

// SignUp.js
import React from 'react';
import { StyleSheet, Text, TextInput, View, Image, TouchableOpacity } from 'react-native';
import firebase from 'react-native-firebase';

export default class SignUp extends React.Component {
  state = {
    fullName: '',
    email: '',
    password: '',
    errorMessage: null
  }

  handleSignUp = () => {

    const { email, password, fullName } = this.state,
    firebase
    .auth()
    .createUserWithEmailAndPassword(this.state.email, this.state.password)
    .then(
      (user) => {
        if (user) {

          user.updateProfile({
            displayName: this.state.fullName,
            photoURL: "../../assets/img/user.png"
          });
        }
    }).then(() => this.props.navigation.navigate('Main'))
    .catch(error => this.setState({ errorMessage: error.message }))
}

...

 <View style={styles.buttons}>
      <TouchableOpacity onPress={this.handleSignUp}>
        <Text style={styles.buttonText}>Sign Up</Text>
      </TouchableOpacity>
 </View>

handleSignUp() метод вызывается через событие onPress, когда пользователь отправляет форму. Я пытаюсь проверить этот метод, чтобы ожидать ошибки, когда пользователь отправляет форму с неверным адресом электронной почты. Это мой тест:

// SignUp.test.js
import { shallow } from 'enzyme';
import React from 'react';
import { TouchableOpacity } from 'react-native';
import SignUp from '../../components/SignUp';
import renderer from 'react-test-renderer';

it('should render error if user submits a bad email', () => {
  const wrapper = shallow(<SignUp />);

  wrapper.instance().handleFullNameText('John Smith');
  wrapper.instance().handleEmailText('john.smith@'); // <- notice bad email
  wrapper.instance().handlePasswordText('123456');

  wrapper.find(TouchableOpacity).first().props().onPress();

})

Мой тест не пройден, и у меня есть ошибка

TypeError: _reactNativeFirebase2.default.auth не является функцией

Не могли бы вы подсказать мне, как я новичок, чтобы реагировать на собственные и модульные тесты?

1 Ответ

0 голосов
/ 18 сентября 2018

В вашем SignUp.test.js

Включите это в начало вашего файла

import '@firebase/firestore'

, чтобы оно выглядело так

import { shallow } from 'enzyme';
import React from 'react';
import { TouchableOpacity } from 'react-native';
import SignUp from '../../components/SignUp';
import renderer from 'react-test-renderer';
import '@firebase/firestore'
...