我正在为Next.js应用程序中的API路由编写集成测试,我想知道将index.test.ts
文件放在/pages
目录下是否有任何问题。我希望测试尽可能接近文件,而不是必须将项目结构Map到__test__
目录中。
./pages/api/path/index.ts
handler.get(async (req: NextApiRequest, res: NextApiResponse) => {
...
});
export default handler;
./pages/api/path/index.test.ts
import { testClient } from "__test__/utils/testClient";
describe("Testing API POST: /api", () => {
test("Should return 401 when not authenticated", async () => {
const request = testClient({ handler });
const res = await request.post("/api/applications");
expect(res.status).toEqual(401);
});
});
1条答案
按热度按时间rggaifut1#
**TL;DR:**虽然默认情况下不可能,但您可以通过在
next.config.js
中自定义pageExtensions
选项来将测试文件放在pages
文件夹中。默认情况下,Next.js将考虑
pages
文件夹下以tsx
、ts
、jsx
或js
结尾的任何文件,以构建页面/API路由和路由。来自自定义页面扩展文档:
Next.js假定
pages
目录中的每个tsx/ts/jsx/js文件都是一个页面或API路由,并且可能会暴露易受拒绝服务攻击的意外路由,或者在构建生产捆绑包时抛出如下错误在
pages
文件夹(或任何子文件夹)中添加名为index.test.ts
的文件将包括该文件作为实际页面,并可能在构建时引发错误。您可以使用
next.config.js
中的pageExtensions
属性修改Next.js预期的扩展名来绕过此问题。使用此配置时,将只考虑具有上述扩展名的页面。因此,您可以拥有以下
pages
文件夹结构,以及位于同一位置的测试文件。path.test.ts
和index.test.ts
都将被忽略。