#typescript #eslint #react-hooks-testing-library
#typescript #eslint #react-hooks-testing-library
Вопрос:
import { renderHook, act } from '@testing-library/react-hooks'
import useRefWithSetter from '../useRefWithSetter'
describe('Test useRefWithSetter', () => {
const { result } = renderHook(() => useRefWithSetter(1))
const [valueRef, setValue] = result.current
test('you can return value through setter function', () => {
act(() => {
setValue(2)
})
expect(valueRef.current).toBe(2)
})
test('you can return callback function through setter function', async () => {
await act(async () => {
setValue((prev) => prev 3)
return Promise.resolve()
})
expect(valueRef.current).toBe(5)
})
})
Сообщение об ошибке: [eslint @typescript-eslint/no-floating-promises] [E] Обещания должны обрабатываться соответствующим образом или явно помечаться как игнорируемые оператором void. (@typescript-eslint / no-floating-promises)
Здравствуйте. Я пытаюсь протестировать свой настроенный хук, но я не знаю, как использовать функцию ‘act’ из react-hooks-testing-library. Это показывает ошибку lint, поэтому я пытался исправить, как второй тест, но я не думаю, что это подходящий способ, потому что этот хук не является функцией Promise. Есть ли какой-либо способ явно пометить как игнорируемый с void
помощью оператора?
Комментарии:
1. Привет, не размещайте код в виде изображений, поместите свой код непосредственно в свой вопрос.
2. @Celsiuss Спасибо за ваш совет! Это мой первый вопрос, так что я об этом не знал.
3. У меня такая же ошибка. Вам удалось это исправить? Документы говорят:
Wrapping incrementAsync in act() is not necessary since the state updates happen asynchronously during await waitForNextUpdate().
Но это все еще нужноact
, и ESLint жалуется.4. @igor Привет, я изменил кое-какой код, и оказалось, что он работает на меня.
test('you can return value through setter function', () => { ;(act as Function)(() => { setValue(2) }) expect(valueRef.current).toBe(2) })
5.
void act(() => { ...}
работает на меня