#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"}});
});