我创建了一个名为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)
});
但是,似乎标志从未按预期设置。我确信这与钩子库与测试库的工作方式有关。
有正确的方法吗?