У меня есть компонент 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 не является функцией
Не могли бы вы подсказать мне, как я новичок, чтобы реагировать на собственные и модульные тесты?