单元测试 REST API

2024-02-29

我在单元测试和模拟方面有一些经验。在我有限的经验中,我会使用这两者来测试服务层,例如,模拟(存根?)数据库以消除依赖性并集中于对业务逻辑进行单元测试。

现在,我正在创建一个将使用 RESTful Web 服务的包装 API 实现。发回给我的json结果结构不在我手中,例如:Twitter。我只是构建客户端来与他们的 api 交互。我不确定如何对 json 结果进行单元测试。现在我只是用静态 json 结构来模拟 http 请求的结果。这确保了 json 到我的 pojo 的反序列化是正确的,但我担心 API 更改。如果api结构发生变化怎么办?如果 API 今天返回“title”,明天返回“groovy_title”怎么办?我的单元测试无法捕捉到这一点。

但根据我的理解 - 单元测试应该很快。以前我会嘲笑数据库,现在我会嘲笑 http,但我实际上应该使用具体的 http 实现,以便立即收到有关 API 重大更改的通知吗?或者有更好的方法来处理这种情况吗?


我将继续做你正在做的事情并模拟你的代码和外部 API 之间的接口。正如您所指出的,这不会检测外部 API 中的更改。

你可以写一体化实际访问外部服务器以测试 API 更改的测试。我怀疑您已经将进行交互的代码分离到了自己的服务器/模块中,因此您可以从字面上 ping 外部 API,而不会被应用程序中超过 1 个抽象层所阻碍。

请注意,您可以在不使用应用程序代码的情况下构建这些测试;即只是 wget 或curl并对结果进行一些分析......

与此相关的问题有很多;我的头顶上浮现出:

您需要网络连接
Slower
外部服务可能会暂时关闭——即失败可能意味着不同的事情。
etc.

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

单元测试 REST API 的相关文章

  • $.each([集合]) 与 $([集合]).each()

    两种方法似乎产生相同的结果 http jsbin com owedo 但我一直很难真正说服人们第二种方法有效 因为它显然并不为人所知 Create some data var foo vals id foo id bar Common Me
  • 尝试解码 JSON 日期时显示“JSON 写入中的类型无效 (__NSTaggedDate)”

    当我尝试从具有日期变量的数据库中解码 JSON 对象时 出现错误 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 JSON 写入中的无效类型 NSTaggedDate 错误发生在以下代码行 le
  • 在JQuery中加载本地json文件

    这里是初学者 我一直在尝试与该主题的答案不同的方法 但它们似乎都不起作用 我看到这个问题已经被问了很多 但不知何故我仍然找不到答案 我想使用本地 json 文件 该文件与我的 JavaScript 和 HTML 文件位于同一文件夹中 这样我
  • 使用 jquery 迭代 JSON 对象

    为什么以下不起作用 在循环内 当 myJSON 为空或不为空时 它永远不会打印 url each parseJSON myJSON function key value alert value url 对于这个 JSON 结构 host f
  • (可选)根据运行时值序列化属性

    从根本上讲 我想根据序列化时的值包含或省略生成的 Json 中的属性 更具体地说 我有一个类型 它知道是否已为其分配了值 并且我只想序列化该类型的属性 如果有 has是分配给它的东西 所以我需要在运行时检查该值 我试图让我的 API 更容易
  • 读取原始输入行并输出单个数组

    我有一个目录 其中包含文件 我想从该文件列表创建一个数组 我以为这会很容易 比如 ls mydir jq R file1 file2 file3 我唯一能弄清楚的是 ls mydir jq sR split n select length
  • 如何使用 mongo-go-driver 有效地将 bson 转换为 json?

    我想将 bson 转换为mongo go 驱动程序 https github com mongodb mongo go driver有效地转换为 json 我应该小心处理NaN 因为json Marshal失败如果NaN存在于数据中 例如
  • 在 Phaser3 中从 Multiatlas 加载文件时出错

    尝试使用 Phaser 和 TexturePacker 中的多图集功能 出现此错误 VM32201 1 GET http localhost 8080 bg sd json 404 Not Found Texture js 250 Text
  • 如何使用 Codable 解析此 JSON?

    我一直在尝试从我的中解析这个对象JSON并不断收到此错误 错误 类型不匹配 Swift Array Swift DecodingError Context codingPath debugDescription 本应解码数组 但找到了字典
  • 返回没有属性名称的 Json 结果

    很可能是一个相当微不足道的问题 但我就是找不到合适的答案 我想返回一个 JsonResult 但实际结果没有任何属性名称 这是我想要实现的一个小例子 xbox Xbox 360 Xbox cheats Xbox 360 games The
  • 正确的需要授权的资源的http状态代码

    如果用户尝试访问需要用户登录的页面 则返回的正确 http 状态代码似乎存在很多混乱 那么当我显示登录页面时基本上会发送什么状态代码 我很确定我们需要在4xx range 我在这里讨论的不是 HTTP 身份验证 因此我们至少不会使用 1 个
  • 当 TestCase 包含数组时,NUnit 无法识别该 TestCase

    这是我在 NUnit 中遇到的非常简单但烦人的行为 我有一些这样的测试 Test TestCase 1 2 hello TestCase 3 5 goodbye public void MyClass MyMethod int a int
  • 如何使用复杂对象或json在ng-table中添加动态列?

    我有以下 ng table 代码 参见笨蛋 http plnkr co edit oTxkmtAwt22gtO2JDPg4 p preview var app angular module main ngTable controller D
  • RestEasy @Path 正则表达式问题

    是否可以使用可选路径变量定义路径 就像下面的 uri app make make model model year year mileage mileage fuelType fuelType maxPrice maxprice trans
  • 使用 Gson 序列化时如何公开类名

    我的场景非常复杂 但总结如下 我试图了解编译器的源代码 并了解每个 AST 节点代表什么 我正在生成不同程序的 AST 的 JSON 序列化 然后检查可视化的 JSON 输出 它工作得很好 除了一个问题是在 Gson 中生成的 JSON 数
  • 等待 JavaScript 中 Json 调用完成

    我正在使用下面的json调用在我的 javascript 方法中 function go123 var cityName var temp getJSON https abc in api city callback args functi
  • 通过鼻子测试检查某个函数是否发出警告

    我正在使用编写单元测试nose http somethingaboutorange com mrl projects nose 0 11 2 我想检查函数是否引发警告 该函数使用warnings warn 这是很容易就能做到的事情吗 def
  • 使用 getJSON 未显示 JSON 数据

    document ready function getJSON news php parseInfo function parseInfo data alert data news undefined info html data news
  • angular.copy() 和 JSON.parse(JSON.stringify()) 之间的区别?

    有人可以解释 angular copy 和 JSON parse JSON stringify 之间的区别吗 有吗 您会推荐使用什么 angular fromJson angular toJson 与 JSON parse JSON str
  • 嵌套对象的 AJV 模式验证

    函数返回的对象看起来像这样 answer vehicle type 1 message Car model VW color red 答案 对象始终存在 其他字段基于 vehicle type E g 如果vehicle type 1 则有

随机推荐

  • jOOQ fetch 与 fetchResultSet 以及 Kotlin 中的关闭连接

    我使用 Kotlin 与 HikariCP 和 jOOQ 来查询我的数据库 我开始意识到这段代码按预期工作 获取行并随后关闭连接 class CountriesService private val datasource DataSourc
  • 正则表达式-如何在字符第一次出现时停止

    我正在尝试从标签中提取 src 值 到目前为止 我似乎能够提取 src 值和字符串中最后一个引号之间的字符串 String img border 0 src http i bookfinder com about booksellers l
  • matplotlib 桑基图中的连接流程

    我正在使用 matplotlibssankey功能 并且在连接两个流时存在问题 基本上 我只想连接流程Qab rekup到流的末尾Qzu rekup 参见屏幕截图 似乎很容易 但我仍然不知道如何管理它 Here s the screensh
  • 在开发系统上禁用 OutputCache

    我在 ASP net MVC 应用程序中使用 OutputCache 由于使用活动的 OutputCache 进行开发并不是很愉快 因此我想禁用开发系统 本地计算机和开发服务器 上的 OutputCache 做这个的最好方式是什么 这是一本
  • 将 df 转换为单独的观察结果[重复]

    这个问题在这里已经有答案了 我想将 df 从 计数 方法 案例数量 转变为 单独观察 方法 Example df lt dplyr tibble city c a a b b c c sex c 1 0 1 0 1 0 age c 1 2
  • 简化具有重复结果的嵌套 if/else?

    我正在尝试简化以下内容 function handleDirection src if src left if inverse tracker else tracker else if inverse tracker else tracke
  • 选择器的“完成”按钮的 Event_Handler

    我有一个包含项目列表的 xamarin 选择器 我想在 iPhone 上按下 完成 按钮和 Android 上按下 确定 按钮时删除选择器 我有删除选择器的代码 但我不知道 event Handler 可能是什么 Code Picker p
  • 安装蓝图时,环境上下文中不允许初始化程序错误

    我正在尝试使用 blueprintjs core我的项目中的库 但是 当我编译代码时 我收到许多这样的错误 node modules blueprintjs core dist common classes d ts 4 30 error
  • C# 中的 XML 多行注释 - 我做错了什么?

    根据本文 http blogs msdn com ansonh archive 2006 09 11 750056 aspx 可以获得多行 XML 注释 而不是使用 use 这是我对多行注释是什么以及我希望发生的情况的解释
  • Visual Studio 2005 清洁解决方案[重复]

    这个问题在这里已经有答案了 如果我有一个包含 10 个项目的解决方案 当我单击 清理解决方案 时 是否只是清理主启动项目解决方案中的 bin debug 或每个项目目录中的 bin debug 它针对当前选定的配置 例如调试 发布等 清理解
  • 在 ng2-select2 中使用 AJAX

    我的 angular2js 项目中有很多下拉菜单 我在用ng2 选择2 https github com NejcZdovc ng2 select2对于这些下拉菜单 在某些下拉列表中 我需要根据用户在 select2 搜索框中输入的字符串来
  • OpenAPI 规范 (YML/YAML):所有 $refs 替换或扩展为其定义(带有模式验证)

    我正在寻找一些解决方案或者一些脚本 可以帮助我通过模式验证替换 ref 或扩展其在 YML 文件中的定义 具体请看下面的例子 示例 使用 ref 输入 pets petId get summary Info for a specific p
  • 识别UIWebview的提交按钮点击

    我有一个带有多个按钮的 UIWebView 页面 需要识别点击的是哪个按钮UIWebView UIWebview加载内容的页面源码
  • 如何获取图片资源

    我应该如何获取imageButton的当前图像资源 我需要这样的东西 imageButton getImageResource 多谢 我认为你不能 当前的 API 不允许这样做 但如果你真的需要这个 你可以这样做 imageButton s
  • 为锦标赛系统分配奖品

    我正在寻找一种将数字分布到 x 个单位的方法 我什至不知道如何表达这个词 所以我举个例子 有一场锦标赛 总奖金为 1000 美元 我希望前 20 名获胜者 参赛者能够从中赢得一些东西 我需要一个数学算法 公式 将其分配给这些玩家 并让我有能
  • 在 Spring Boot 的 application.properties 中使用 env 变量

    我们正在开发一个Spring Boot Web应用程序 我们使用的数据库是MySQL 我们的设置是我们首先测试它locally 意味着我们需要在我们的PC上安装MySQL 然后我们推送到 Bitbucket Jenkins 自动检测到 Bi
  • 如何使 str.splitlines 方法不按十六进制字符分割行?

    我正在尝试使用 str splitlines 解析 GNU Strings 实用程序的输出 这是 GNU Strings 的原始输出 279304 9k pN n 279340 9k PN n 279376 9k
  • Go 语言的 Setter

    抱歉问这个基本问题 我是 Go 语言的新手 我有一个名为的自定义类型ProtectedCustomType我不希望其中的变量是set直接由调用者调用 而想要一个Getter Setter方法来做到这一点 下面是我的ProtectedCust
  • 获得正确的方法来设计复选框,而无需跟随标签标签

    我使用一些 CSS 来重新设计 ASP NET 中的复选框 input type checkbox display none important cursor pointer input type checkbox not disabled
  • 单元测试 REST API

    我在单元测试和模拟方面有一些经验 在我有限的经验中 我会使用这两者来测试服务层 例如 模拟 存根 数据库以消除依赖性并集中于对业务逻辑进行单元测试 现在 我正在创建一个将使用 RESTful Web 服务的包装 API 实现 发回给我的js