Как исправить метод “simulate” предназначен для запуска на 1 узле. вместо этого найдено 0 в шутку

#reactjs #jestjs

#reactjs #jestjs

Вопрос:

Я пишу тестовый пример, используя jest в Reactjs, но он завершается с ошибкой и выдает ошибку Method “simulate” is meant to be run on 1 node. 0 found instead . Я реализовал тестовые примеры, обратившись к этой статье .

Компонент

 render() {
        const { errors } = this.state;
        return (
            <div style={{backgroundColor:'linear-gradient(RGBA(182,82,80))' , height:'50vh'}}>
                <Container className='mt-5 mb-3 ' style={{width:'40em',height:'36em',backgroundColor:"White",borderRadius:'20px'}}>
                    <form noValidate onSubmit={this.onSubmit} className='login'>
                        <div className="form-group">
                            <label>Email</label>
                            <input type="text" className="form-control" placeholder="Email"
                                   onChange={this.onChange}
                                   value={this.state.email}
                                   error={errors.email}
                                   id="email"
                                   name="email"
                                   className={classnames("", {
                                       invalid: errors.email || errors.emailnotfound
                                   })}
                            />
                            <span className="red-text">
                                {errors.email}
                                {errors.emailnotfound}
                            </span>
                        </div>
                    </form>

                </Container>
                <Footer/>
            </div>
        );
    }
  

Тестовый пример

 import React from 'react';
import {shallow} from 'enzyme';
import login from '../Components/login';

describe('Test case for testing login',() =>{
    it('username check',()=>
    {
        wrapper = shallow(<login/>);
        wrapper.find('input[type="text"]').simulate('change', {target: {name: 'email', value: 'krishankantsinghal'}});
        expect(wrapper.state('email')).toEqual('krishankantsinghal');
    })
})
  

В чем может быть возможная ошибка? Как я могу это исправить? Заранее спасибо

Ответ №1:

Имя компонента в нижнем регистре должно быть для собственных элементов браузера, таких как span или table . Хотя <login .. это всегда будет отображаться буквально, без участия вашего класса.

Чтобы справиться с этим, вы должны использовать формат upper-first (или «capitalized»):

 import Login from './login.jsx';

...
... shallow(<Login ........)