NextJS Jest - 测试中间件时未定义语言环境

问题描述 投票:0回答:1

NextRequest 对象在运行时总是返回一个未定义的区域设置数据值(req.nextUrl.locale)

当我尝试在测试中设置值时遇到此错误:

TypeError: The NextURL configuration includes no locale "en"

    > 101 |     req.nextUrl.locale = 'en';

这是我的测试:

it('should redirect to default locale URL for default locale paths without token', async () => {
    const req = new NextRequest(new Request('https://example.com/register'), {
      headers: {
        locale: 'default',
      },
    });

    req.cookies.set(appConfig.i18n.cookie_locale, 'en');
    req.nextUrl.locale = 'en';

    const response = await middleware(req);

    expect(response).toEqual(
      NextResponse.redirect(new URL('/register', req.url))
    );
  });

我也尝试设置标题,但没有改变任何东西

reactjs next.js jestjs
1个回答
0
投票

您需要将具有正确形状的配置对象作为第二个参数传递给

new NextRequest()
。在这种情况下,它看起来像:

const req = new NextRequest(new Request('https://example.com/register'), {
  nextConfig: {
    i18n: {
      defaultLocale: 'en-US',
      locales: ['en-US'],
    },
  },
}); 

通过这里这里、然后这里

追踪
© www.soinside.com 2019 - 2024. All rights reserved.