如何使用 jest 测试 Next.js 的 getServerSideProps

Jac*_*ack 8 typescript reactjs jestjs next.js

我想使用 Jest 和 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,
    },
  };
};
Run Code Online (Sandbox Code Playgroud)

但是,由于我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"}})
  });
Run Code Online (Sandbox Code Playgroud)

我的问题是我应该将什么传递给上下文参数。我知道它的类型必须是:GetServerSidePropsContext<ParsedUrlQuery>。但我不确定如何创建该类型。我可以将什么传递到函数中,同时也允许我id在参数中添加值?

jul*_*ves 5

在测试中传递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"}});
});
Run Code Online (Sandbox Code Playgroud)