Типы возврата для служебных функций библиотеки React Testing - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь выяснить, каким должен быть тип возвращаемого значения (вместо универсального: любого) для утилит, возвращаемых библиотекой тестирования.

Например, при следующем сообщении я получаю ошибку TS (Неожиданно. Укажите другой тип.)

const setup = (): any => {
              //~~~~~ Unexpected any. Specify a different type.
  const utils = render(
...
  );
  const button = utils.getByText(/some text/i);
  return { button, ...utils };
};
test('it renders', () => {
  const { button } = setup();
  expect(button).toBeInTheDocument();
});

1 Ответ

0 голосов
/ 28 сентября 2019

setup возвращает объект типа T, который вам нужно выяснить.Он имеет:

  • key: value, где имя key - это строка 'button', а value - typeof button, что JSX.Element.

  • Все ключи и значения, которые находятся внутри типа, возвращаются render().Который оператор распространения вводит непосредственно в тип T. Вы не показали тело render().Я думаю, он также возвращает JSX.Element.

Итак, у нас есть

type T = {
  button: JSX.Element
  ...
  // the internals of JSX.Element that spread operator directly injects here
  ...
}

Я должен был дать render() тело с примером кода.И имеем:

const render = (): JSX.Element => {
  const MyButton = () => ( <div>Hello </div> )
  return (
    <>
    <MyButton />
    </>
  )
};

type T = {
  type: any;
  props: any;
  key: string | number | null;
  button: JSX.Element;
};

const setup = (): T => {
  const utils = render();
  const button =  <div>Hello </div>;
  return { button, ...utils };
};
...