如何在 Next JS 中使用链接测试路由?

Posted

技术标签:

【中文标题】如何在 Next JS 中使用链接测试路由?【英文标题】:How test routing with links in Next JS? 【发布时间】:2021-05-06 06:29:03 【问题描述】:

我是 NextJS 环境的初学者,我正在从常见的 ReactJS 迁移应用程序。这是对另一个页面的链接的简单测试。那么,我应该如何重构我的测试呢?

*我正在使用 Jest 和测试库。

// My current code in ReactJS
test('Should go to Post page', () => 
        const post = mockPostModel()
        const history = createMemoryHistory( initialEntries: ['/'] )
        render(
            <Router history=history>
                <BlogPost post=post />
            </Router>
        )
        fireEvent.click(screen.getByTestId('link'))
        expect(history.location.pathname).toBe(`/post/$post.title`)
    )

【问题讨论】:

【参考方案1】:

为了能够使用 jsdom 呈现 Next.js 页面,您可以使用 next-page-tester。这是一个相当新的库,因此文档不多,也不是所有内容都受支持,但 README 中有一个使用示例。

另一种选择是使用端到端测试而不是 jsdom。这是一个较慢的选项,但一切都会正确呈现。

【讨论】:

感谢您的帮助,但这不是我想要的方法。我想测试独立的组件,比如我的标题、按钮等。

以上是关于如何在 Next JS 中使用链接测试路由?的主要内容,如果未能解决你的问题,请参考以下文章

Next.js-express 动态路由导致页面重新加载

如何不在 Next.js 动态路由之间保持状态?

使用 React-testing-library 进行测试时出现 Next.js 路由器错误

Next.js:在实现私有路由时,如何在重定向之前防止未经授权的路由/页面的闪烁?

如何基于 GraphQL API 的 slug 使用 Next.js 进行动态路由?

如何在 Ember js 控制器功能测试中调用路由功能?