【问题标题】:Test of remote REST service API specifically HubSpot测试远程 REST 服务 API,特别是 HubSpot
【发布时间】:2019-11-05 12:17:41
【问题描述】:
我打算编写一个 Spring Boot 应用程序,该应用程序在内部处理一些联系人/客户数据,并且我想集成 HubSpot。例如,我有一个联系人 ID,我想用它来请求 HubSpot API(更新、删除、获取个人资料……)。
为 HubSpot 编写集成测试的最佳方法是什么?
我应该这样做吗?
当我要求 HubSpot 获取个人资料或更新联系人时,我希望得到 JSON 响应。我应该如何测试这个?
我是否应该测试我是否获得了一些 JSON,或者我是否应该测试 JSON 的结构以获取该联系人的更多信息以继续某些工作流程?
或者,我应该只为实际上请求 HubSpot API 的服务编写单元测试吗?
【问题讨论】:
标签:
rest
spring-boot
service
integration-testing
【解决方案1】:
这是一个有趣的问题。关于我应该测试什么的许多问题得到了很好的答案,这取决于你准备承担的风险。这是我写的关于这个主题的blog post作为背景。
就测试 HubSpot 集成的技术性而言。 HubSpot 有documentation,它告诉您如何创建可用于测试您的集成的测试用户。
现在,您应该编写哪些测试?
首先,Should I do it at all?,在我看来答案是肯定的。只需您有两个活动部分,您的代码和 HubSpot 即服务。任何一个都可能改变并破坏您的集成。如果没有合适的测试,当它发生时将变得更难调试。
现在讨论如何测试。这里有三种类型的测试会有所帮助:
单元测试。这将测试您编写的代码。在这种情况下,我会模拟来自 HubSpot 的响应,以便您测试代码但实际上并未调用 HubSpot。
-
集成测试。给定标签,我假设您的问题的基础。为此,我将使用一个测试帐户并检查您所期望的每个行为。
使用测试帐户,您可以以可控的方式执行此操作。唯一移动的部分是您对 HubSpot API 的调用及其响应。这将在您修改代码或 HubSpot 发布新版本时轻松突出问题。这是让您确信您的集成是正确的级别。在这一点上,我将验证 HubSpot 的响应、结构和价值。另外,我会检查是否执行了正确的操作(在创建或更新用户的情况下)。
- 端到端测试。使用 HubSpot 上的测试用户完成 Spring Boot 应用程序的流程。这当然会让您确信您的整个应用程序正在运行。但是,如果这里由于与 HubSpot 的集成导致失败,您希望相应的集成测试失败来帮助调试。