Как проверить Next.js’s getServerSideProps с шуткой

#reactjs #jestjs #next.js #enzyme

Вопрос:

Я хотел бы провести тесты с шуткой и ферментом на Next.js это getServerSideProps функция. Функция выглядит следующим образом:

 export const getServerSideProps: GetServerSideProps = async (context) => {
  const id = context?.params?.id;
  const businessName = getBusinessName(id);
  return {
    props: {
      businessName: response.data?.name,
      businessID: id,
    },
  };
};
 

Однако, поскольку я использую context параметр в своей функции, мне нужно передать контекст в свой тест. Мой тест прямо сейчас выглядит так:

 it("check on good case", () => {
    const value = getServerSideProps(/*I'm not sure what to put here*/);
    expect(value).toEqual({props: {businessName: "Name", businessID: "fjdks"}})
  });
 

Мой вопрос в том, что я передаю в параметр для контекста. Я знаю, что это должно быть типа: GetServerSidePropsContext<ParsedUrlQuery> . Но я не уверен, как создать такой тип. Что я могу передать в функцию, которая также позволяет мне добавлять id значение в параметры?

Ответ №1:

Вы можете прибегнуть к приведению типов при передаче context объекта getServerSideProps в тесте.

 it("check on good case", () => {
    const context = {
        params: { id: "fjdks" } as ParsedUrlQuery
    };
    const value = getServerSideProps(context as GetServerSidePropsContext);
    expect(value).toEqual({props: {businessName: "Name", businessID: "fjdks"}});
});