Это продолжение другого учебника, который я написал. ссылку можно найти здесь.



Итак, в предыдущем уроке мы говорили о том, что такое шутка и фермент, и как они помогают нам тестировать компонент реакции. в этом руководстве мы создадим простой компонент входа в систему и будем тестировать его с помощью jest.

Компонент входа в систему

import React from 'react';
export default class Login extends React.Component{
constructor() {
  super()
  this.state = {
  username: '',
  password: '',
  isLogined: false
 }
}
handleInputChange = (event) => {
this.setState({
    [event.target.name]: event.target.value
  })
}
submitClick=() =>
{
if((this.state.username=="krishankantsinghal") &&   (this.state.password=="krishankant123"))
{
   this.setState({isLogined:true});
}
}
render() {
return (
<div>
 <input type="text" name="username" hint="username" onChange=    {this.handleInputChange} />
<input type="password" name="password" hint="password" onChange={this.handleInputChange} />
<button  name="submit" onClick={this.submitClick}> Submit</button></div>);
}
}

это простой компонент входа в систему, имеющий 2 тестовых элемента ввода и одну кнопку. при вводе мы добавили событие изменения, поэтому всякий раз, когда пользователь вводит какое-либо значение, оно обновляется в состоянии компонента.

import React from 'react';
import { shallow } from 'enzyme';
import login from './index'
import Login from './index';
describe('Test case for testing login',() =>{
let wrapper;
test('username check',()=>
{
wrapper = shallow(<Login/>);
wrapper.find('input[type="text"]').simulate('change', {target: {name: 'username', value: 'krishankantsinghal'}});
expect(wrapper.state('username')).toEqual('krishankantsinghal');
})
it('password check',()=>{
wrapper = shallow(<Login/>);
wrapper.find('input[type="password"]').simulate('change', {target: {name: 'password', value: 'krishankant123'}});
expect(wrapper.state('password')).toEqual('krishankant123');
})
it('login check with right data',()=>{
wrapper = shallow(<Login/>);
wrapper.find('input[type="text"]').simulate('change', {target: {name: 'username', value: 'krishankantsinghal'}});
wrapper.find('input[type="password"]').simulate('change', {target: {name: 'password', value: 'krishankant123'}});
wrapper.find('button').simulate('click');
expect(wrapper.state('isLogined')).toBe(true);
})
it('login check with wrong data',()=>{
wrapper = shallow(<Login/>);
wrapper.find('input[type="text"]').simulate('change', {target: {name: 'username', value: 'krishankantsinghal'}});
wrapper.find('input[type="password"]').simulate('change', {target: {name: 'password', value: 'krishankant1234'}});
wrapper.find('button').simulate('click');
expect(wrapper.state('isLogined')).toBe(false);
})
})

Здесь мы выполняем 4 тестовых примера. в первом тестовом примере «проверка имени пользователя» мы вставляем имя пользователя с помощью ключевого события. а затем проверьте, что переменная состояния эквивалентна вставленному значению в текстовом поле.

Во втором поле, таком как имя пользователя, мы вводим пароль и сравниваем значения.

В третьем тестовом случае мы моделируем событие нажатия кнопки и извлекаем имя пользователя и пароль из состояния и сравниваем со значением, это правда, чем мы уверены, что компонент входа в систему работает должным образом.

Таким же образом в четвертом тесте мы проверяем негативный сценарий.