当前位置: 首页 > 知识库问答 >
问题:

克隆reqwest反应

傅恺
2023-03-14

我目前正在尝试使用actix-web和ReqWest测试一个APIendpoint。

这就是产生错误的原因:

let inserted_user = sqlx::query!(
    r#"
    INSERT INTO users (name)
    VALUES ($1)
    RETURNING id
    "#,
    String::from("john"),
)
.fetch_one(&app.db_pool)
.await
.unwrap();

let response = client
    .get(&format!("{}/", &app.address))
    .send()
    .await?;

let users: Vec<User> = response.json().await?;
assert_eq!(inserted_user.id, users[0].id);
assert!(response.status().is_success());

如果我将response.status()上的断言顺序与assert_eq!交换,它就可以工作了。但我认为这不是最好的方法,正如它应该明确指出的那样,与评论或进一步了解,这是以这种特定的方式工作。

如果我不能克隆reqwest响应,我可以做些什么来避免依赖断言的顺序吗?或者我怎么克隆它?

共有1个答案

阎星河
2023-03-14

老实说,我认为在你得到回应后,这个断言更有意义。为什么要解析响应,然后才断言响应是正确的呢?如果一开始响应就不正常,那么无论如何解析都很可能失败,您甚至无法到达断言,不是吗?

但是,如果您真的想在这一点上执行断言,您可以在使用响应之前将response.status()放入一个临时的:

let status = respons.status();
let users: Vec<User> = response.json().await?;
assert_eq!(inserted_user.id, users[0].id);
assert!(status.is_success());
 类似资料:
  • 应用克隆 (用于已有服务,需要在另一个业务线下创建一个同样的服务,不需要重新创建) 服务/环境克隆(菜单栏:工具集->服务/环境克隆) 点击菜单栏,在项目列表中筛选您要克隆的项目,然后点击 克隆 ,弹框中选择您要克隆到哪个业务线。 选择目录空间,系统为在目标空间下生成该应用所需要的所有类型资源和Jenkins Job。

  • 主要内容:示例在某些情况下,您可能需要一个表的完整、精确副本,也即克隆表(复制表)。我们首先想到的是使用 CREATE TABLE 命令创建一张新表,然后使用 SELECT 命令从旧表中选取所有数据,并使用 INSERT 命令插入到新表中。但是这种做法可能达不到您的目的,因为副本必须包含相同的索引、约束、默认值等。 如果您使用 MySQL 数据库,可以借助 SHOW CREATE TABLE 命令,该命令用来展

  • HackerNews 克隆是基于 HN 的官方 firebase API 、Vue 2.0 、vue-router 和 vuex 来构建的,使用服务器端渲染。 Live Demo 注:如果在一段时间内没有人访问过该网站,则需要一些加载时间。 [Source] 特性 服务器端渲染 Vue + vue-router + vuex 服务端数据提前获取 客户端状态 & DOM 合并 单文件 Vue 组件

  • void cloneTable(String srcName, String destTable, boolean flushTable) 功能 克隆已存在的表,具有相同的TableSpec和表数据 方法参数 1.srcName : String : required 克隆的源表的表名 2.destTable : String : required 克隆的目标表的表名 3.flushTable :

  • 我们已经按照 ChineseTutorialInstall 安装了 Mercurial,对吗?很好! Mercurial 中,我们在 仓库 里做我们所有的工作。仓库是一个目录,它包含所有我们希望保留历史的源代码和这些源代码的历史记录。 最简单开始 Mercurial 的方法是使用一个已经包含文件和一些历史记录的仓库。 我们使用 clone 命令来做这个事情。 这生产一个仓库的Clone",它生成一

  • 到现在为止,读者已经零略到Git的灵活性以及健壮性。Git可以通过重置随意撤销提交,可以通过变基操作更改历史,可以随意重组提交,还可以通过reflog的记录纠正错误的操作。但是再健壮的版本库设计,也抵挡不了存储介质的崩溃。还有一点就是不要忘了Git版本库是躲在工作区根目录下的.git目录中,如果忘了这一点直接删除工作区,就会把版本库也同时删掉,悲剧就此发生。 “不要把鸡蛋装在一个篮子里”,是颠扑不