React Native + Jest — ошибка FlatList — «ReactDebugCurrentFrame.setExtraStackFrame не является функцией»

avatar
Richard Bosworth
8 августа 2021 в 15:48
313
1
0

Я пытаюсь протестировать простой компонент React Native (Expo Managed) на основе FlatList с помощью Jest. Jest настраивается с помощью параметра "preset": "jest-expo".

Код компонента выглядит следующим образом:

import { FlatList } from "react-native";
import React from "react";
import { Message } from "../../../graph/graph";
import MessageComponent from "../message";

export interface MessageStackProps {
  messages: Message[];
}

export default function MessageStack({ messages }: MessageStackProps) {
  const renderItem = ({ item }) => {
    const message = item as Message;
    return (
      <MessageComponent
        text={message.text}
        targetStatuses={[]}
        sentDate={new Date()}
      />
    );
  };

  return <FlatList data={messages} renderItem={renderItem} />;
}

Мой тест выглядит следующим образом:

function render(messages: Partial<Message>[] = []) {
    return render(<MessageStack messages={messages as Message[]} />);
  }

it("should render a single message for one message", () => {
    const message: Partial<Message> = {
      id: 1,
      text: "Test message",
    };
    const { getAllByText } = render([message]);

    expect(getAllByText(/message/i)).toBeArrayOfSize(1);
  });

При запуске этого теста я получаю следующую ошибку:

TypeError: ReactDebugCurrentFrame.setExtraStackFrame is not a function
The above error occurred in the <CellRenderer> component:

Я делаю что-то не так или это известная проблема?

Буду признателен за любую помощь! Спасибо!

Источник
zimmerbimmer
25 февраля 2022 в 19:31
0

Удалось ли вам решить эту проблему?

Ответы (1)

avatar
Mark Oswald
28 сентября 2021 в 08:24
0

Просто предположение: не могли бы вы попробовать добавить свойство key в MessageComponent?

  const renderItem = ({ item }) => {
    const message = item as Message;
    return (
      <MessageComponent
        key={message.id}
        text={message.text}
        targetStatuses={[]}
        sentDate={new Date()}
      />
    );
  };