使用 React 测试库提交后测试重定向

2024-04-15

我正在尝试测试登录组件。具体来说,它会在成功登录时重定向。手动测试时效果很好。但在我的测试中,它从不进行重定向,因此找不到“注销”链接:

test('successfully logs the in the user', async () => {
  const fakeUserResponse = {success: true, token: 'fake_user_token'}
  jest.spyOn(window, 'fetch').mockImplementationOnce(() => {
    return Promise.resolve({
      json: () => Promise.resolve(fakeUserResponse),
    })
  })
  const { getByText, getByLabelText, findByTestId } = render(<Router><Login /></Router>)

  fireEvent.change(getByLabelText(/email/i), {target: {value: '[email protected] /cdn-cgi/l/email-protection'}})
  fireEvent.change(getByLabelText(/password/i), {target: {value: 'password1234'}})
  fireEvent.click(getByText(/submit/i))

  await waitForElement(() => getByText(/logout/i));
})

我正在重定向react-router版本 4,如下所示:

{state.resolved ? <Redirect to="/" /> : null}

我是否以错误的方式处理这个问题?


你可以嘲笑Redirect组件的实现显示一些包含路径的文本,而不是重定向到它:

jest.mock('react-router-dom', () => {
  return {
    Redirect: jest.fn(({ to }) => `Redirected to ${to}`),
  };
});

并期望您的组件显示具有正确路径的文本:

expect(screen.getByText('Redirected to /')).toBeInTheDocument();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 React 测试库提交后测试重定向 的相关文章

随机推荐

  • 使用 3 维向量的问题

    如何在 C 中使用 3 维向量 vector
  • jQuery 在 Laravel 5 中无法正常工作

    我创建了一个 Web 应用程序 它接受用户输入 查询 API 使用 PHP 处理数据 然后使用 jQuery 和 D3 将其呈现为一系列图表 我最初以程序方式设置它 但此后一直使用 Laravel 框架来实现它 我遇到的问题是 JavaSc
  • 列出文件夹中的所有文件 - 文件的完整路径

    我有一个文件夹C Name Folder 我有几个文件 我需要显示该文件夹中文件的完整文件路径 它应该以以下格式显示所有文件C Name Folder file txt 我的代码如下 string filePaths Directory G
  • 我正在开发 Firefox 扩展,想要计算网页文本框的总数,那么如何计算文本框? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在开发 Firefox 扩展 想要计算网页文本框的总数 那么如何使用 javascript 计算文本框 选择它们并计数length va
  • 将大型 SVN 存储库迁移到 git

    我有一个大型 SVN 存储库 大约 140GB 其中包含许多项目 并且不遵循 svn 推荐的目录结构 从所有这些数据 包括二进制文件 发布版本和依赖项 来看 我真正关心的是特定路径 与其他所有数据相比 该路径实际上具有非常小的历史记录 到目
  • 您将如何设计数据库以允许用户定义模式[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如果您必须创建一个应用程序 例如博客应用程序 那么创建数据库模式相对简单 你必须创建一些表 tblPosts tblAttachments tb
  • BigQuery中有新数据时触发云功能

    我想在新数据导入 BigQuery 表时触发 Cloud Function 理想情况下 我想提取已插入的所有行 一列是 ISIN 这可能吗 如何实现 2022 年 6 月更新 第二代 Cloud Functions 支持Eventarc h
  • Razor _Layout.cshtml 中的嵌入代码

    我正在开发一个 MVC3 Razor Web 应用程序 它从 java 内容管理系统获取其页面装饰 由于此装饰由每个页面共享 我已将 CMS 内容的检索放入 Layout cshtml 文件中 但我对我实现的代码并不完全满意 The fir
  • 使用 codeigniter 活动记录获取单个字段输出的值

    以下函数应该从数据库中读取给定资产代码的名称 但它会触发错误 尝试获取非对象的属性 function sban name asset this gt db gt select name this gt db gt from asset ty
  • 如何从 Magento 的报价中删除项目?

    在结账过程中 我有时想以编程方式从会话的报价中删除项目 所以我尝试了这段代码 quote Mage getSingleton checkout session gt getQuote all quote items quote gt get
  • 阅读时的 mv()

    在 Linux ext3 文件系统上 如果在读取文件时对同一个文件 文件描述符 调用 mv 会发生什么情况 这实际上是一道考试题 我只能说 CPU 捕获 OS 进行中断处理 等等等等 如果操作系统人员可以帮助我 我将不胜感激 D Linux
  • 使用 join/awk/sed 合并 CSV 文件

    您能帮我找到 bash 命令 该命令会将以下 cvs 文件 template csv file1 csv file2 csv file3 csv fileX csv 加入 合并到 ouput csv 中吗 对于 template csv 中
  • 在 postgresql 中查找主机名[重复]

    这个问题在这里已经有答案了 是否可以像 MS SQL Server 那样使用简单的语法 SELECT HOST NAME 在 postgresql 9 3 2 中 我读过一些文章但没有结果 不 默认版本没有这个功能 然而 使用新的本机函数扩
  • 从一个 python 脚本输出检查过期日期的代码

    我有一个预制的 Python 脚本 可以在地址服务器中调用 C 脚本 该脚本的输出是 Build Number 2381 Database Date 2015 07 15 Database Expiration Date 10 31 201
  • 如何使用键值编码判断对象是否存在键?

    我想测试iPhone SDK中的对象是否具有可写的 property 一种可能的方法是检查 valueForKey 方法 但这看起来相当不优雅 Example try id value instance valueForKey myProp
  • jQuery 选择器错误?组合选择器与简单选择器和 find()

    我的情况很尴尬 我有这样的事情 div div
  • CoreData 按属性划分的唯一对象

    我有一个图表 其中包含一种名为 消息 的对象 一条消息可以有子项 因此该图是一棵树 图上的每个对象都包含一个属性值 这是一种 UUID 全局唯一 因此存储不能包含具有相同 UUID 的多条消息 此 uuid 是从消息数据中获取的字符串 因此
  • 使用PBKDF2 java解密和加密

    有没有办法解密PBKDF2java中的密码 Java有实现PBKDF2算法为PBKDF2WithHmacSHA1 我得到了为密码创建哈希值的代码 我参考了下面的链接来了解哈希技术 http howtodoinjava com securit
  • Rails 5 - 找不到生成器“rspec:安装”

    在我的 Rails 5 0 0 应用程序中 我已将以下内容添加到我的 Gemfile 中 group development test do gem byebug platform mri gem rspec rails gt 3 5 gt
  • 使用 React 测试库提交后测试重定向

    我正在尝试测试登录组件 具体来说 它会在成功登录时重定向 手动测试时效果很好 但在我的测试中 它从不进行重定向 因此找不到 注销 链接 test successfully logs the in the user async gt cons