OnClick = метод имитации предназначен для запуска 1 one = 0 found - PullRequest
0 голосов
/ 15 февраля 2019

Невозможно определить следующую ошибку: Использование Jest Enzyme - React JS

** Метод «simulate» предназначен для запуска на 1 узле.0 найдено вместо.**

Я пытаюсь проверить onClick = для реквизита / свойств.OnClick вызывается пару раз для этого файла.Я попытался применить тот же метод, который использовал для другого файла, но в данный момент он не работает. Пример: вызов onClick (this.props):

   <div className="continue_button_div">
  <button className='cancel_button' id='cancel-add-new-view' 
  title='Cancel' type='button' onClick={() => 
 {this.props.hideAddViewModal()}}>Cancel</button>
  </div>

 <div className="continue_button_div">
 <button className='cancel_button' id='cancel-add-new-view' title='Cancel' 
 type='button' onClick={() => 
 {this.props.hideAddViewModal()}}>Cancel</button>

Я сделал следующее для своих тестовых файлов.

// jest mock functions (mocks this.props.func)
const hideAddViewModal =  jest.fn();
// defining this.props
const baseProps = {
hideAddViewModal,

describe('AddViewModal Test', () => {
let wrapper;
let tree;

beforeEach(() => wrapper = shallow(<AddViewModal {...baseProps} />));

   it("should call hideAddViewModal functions on button click", () => {
// Reset info from possible previous calls of these mock functions:
baseProps.hideAddViewModal.mockClear();
wrapper.setProps({
});
// Find the button and call the onClick handler
wrapper.find('.sidemodal_addnew_x').at(0).simulate("click"); //pass
wrapper.find('.cancel_button').at(0).simulate("click"); //fails
wrapper.find('.cancel_button').at(1).simulate("click");//fails

Но я продолжаю получать ошибку, описанную сверху.

Еще один пример onClick.Могу ли я применить вышеописанный метод к этому же, или как я могу убедиться, что onClick вызывает clearviewName = () = {

clearViewName = () => {

this.setState({ViewName: ''});
this.setState({Requests: ''});
this.setState({allowNext: false})

Render(){
 <div className="fullmodal_title_select"><span 
className="fullmodal_title_add_done" onClick={() => {this.clearViewName()}} 
>Add View  </span><FontAwesome name='right' className='fa-angle-right' />  
Select a request</div>

Спасибо

1 Ответ

0 голосов
/ 15 февраля 2019

В общем, что-то вроде этого:

it('For first cancel button', () => {
        // Reset info from possible previous calls of these mock functions:
        baseProps.hideAddViewModal.mockClear();
        wrapper.setProps({});
        // Find the button and call the onClick handler
        wrapper.setState({
          ViewName: 'something',
          allowNext: true,
        })
        wrapper.find('.cancel_button').at(0).simulate('click');
})

затем

it('For second cancel button', () => {
        // Reset info from possible previous calls of these mock functions:
        baseProps.hideAddViewModal.mockClear();
        wrapper.setProps({});
        // Find the button and call the onClick handler
        wrapper.setState({
          ViewName: 'something',
          RequestID: 'something',
          Requests: ['random, I dont know the type inside here so']
        })
        wrapper.find('.cancel_button').at(0).simulate('click');
})

Также есть какая-то причина, по которой вы пишете свои обработчики кликов, подобные этому

onClick={() => {
  this.onContinueClick();
}}

вместо этого

onClick={this.onContinueClick}

Что касается другой проблемы,

Вы можете отредактировать baseProps, чтобы она выглядела так:

const baseProps = {
   hideAddViewModal,
   location: {
     pathname: 'home'
   },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...