测试将事件传递到元素的挂钩

时间:2019-04-19 13:20:58

标签: javascript reactjs testing react-testing-library

我创建了一个名为useFocus的带有以下签名的钩子:

function useFocus<TElement extends HTMLElement>({
  onFocus?: React.FocusEventHandler<TElement>;
  onBlur?: React.FocusEventHandler<TElement>;
}): {
  isFocused: boolean;
  onFocus: React.FocusEventHandler<TElement>;
  onBlur: React.FocusEventHandler<TElement>;
}

我正在尝试针对该元素进行测试,并获取isFocused标志进行更新。以下是我对其进行测试的方式:

import { renderHook } from 'react-hooks-testing-library';
import { render, fireEvent } from 'react-testing-library';
import { useFocus } from '../';

test('It should set flag on focus', () => {
  const { result } = renderHook(useFocus);
  expect(result.current.isFocused).toEqual(false);
  const { container } = render(<input
    onFocus={result.current.onFocus}
    onBlur={result.current.onBlur}
  />);
  fireEvent.focus(container);
  expect(result.current.isFocused).toEqual(true)
});

但是,似乎标志从未按预期设置。我确信这与钩子库与测试库的工作方式有关。

有正确的方法吗?

0 个答案:

没有答案