функция @testing-library / react-hooks ‘act’ показывает мне ошибку «без плавающих обещаний»

#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(() => { ...} работает на меня