Реактивная тестовая функция внутри onChange - PullRequest
0 голосов
/ 10 мая 2018

У меня есть следующий компонент без сохранения состояния:

import React from 'react';

const Input = ({ name, onChange, type }) => (
  <input 
    name={name}
    onChange={onChange}
    type={type} />
);

export default Input

Утилита работает так:

export const getValue = e => ({ 
    name: e.target.getAttribute('name'),
    value: e.target.value
})

и мой тест выглядит так:

it('should call the onChange for the input element', () => {
  const event = {target: {name: "pollName", value: "spam"}};
  const input = shallow(<Input onChange={getValue} />)
  input.simulate('change', event)
})

theошибка, которую я получаю из теста:

TypeError: e.target.getAttribute is not a function

Я не ожидал получить эту ошибку, передав ложное событие

1 Ответ

0 голосов
/ 10 мая 2018
Объект события

, который вы передали функции simulate, не имеет функции target.getAttribute.Вы можете просто добавить его туда:

const attrs = {name: "pollName", value: "spam"}
const event = {target: { getAttribute: name => attrs[name], ...attrs }};
...