моделирование метода onClick с параметром с использованием Enzyme в React

Я пытаюсь смоделировать метод onClick в своих модульных тестах, используя Enzyme для React. Я нашел много руководств по моделированию onClick, которое принимает некоторое событие e, например:

handleClick(e) {
    // Does something
}

....
<MyComponent
onClick = {handleClick}
></MyComponent>

Однако я хочу иметь возможность имитировать мой onClick, который не принимает событие в качестве параметра, а вместо этого принимает что-то еще, то есть:

onClick = {() => handleClick(myParam)}

Я пытался использовать .simulate('click', [myParam]);, но он не передал параметр, как я ожидал.

Как мне имитировать щелчок, который отправляет определенный параметр обработчику?


person Tevon Strand-Brown    schedule 06.07.2017    source источник


Ответы (1)


согласно документации, в нем говорится, что:

.simulate(event[, mock]) => Самомоделирование событий

Аргументы

событие (строка): имя моделируемого события (объект [необязательно]): фиктивный объект события, который будет объединен с объектом события, переданным обработчикам.

поэтому вам нужно исправить свой код и передать объект:

.simulate('click', {myParam});

Вы также можете взглянуть на реализацию и посмотреть, как она передается обработчику событий здесь:

simulate(event, ...args) {
    const handler = this.prop(propFromEvent(event));
    if (handler) {
      withSetStateAllowed(() => {
        // TODO(lmr): create/use synthetic events
        // TODO(lmr): emulate React's event propagation
        performBatchedUpdates(this, () => {
          handler(...args);
        });
        this.root.update();
      });
    }
    return this;
  }
person Tal Avissar    schedule 06.07.2017
comment
Хорошо, это имеет смысл. меня смутил «фиктивный объект события». Так что это может быть любой объект, переданный обработчику события? - person Tevon Strand-Brown; 07.07.2017
comment
Не могу в течении 10 минут после поста :/ скоро будет! - person Tevon Strand-Brown; 07.07.2017