1

这是我第一次玩黄瓜,还创建了一个测试和 API 的套件。我的问题是在测试 API 时是否需要运行它?

例如,我脑子里有这个,

  • 启动快递服务器作为后台任务

  • 然后当它启动时(我怎么知道这是否发生了?)然后运行黄瓜测试?

我真的不知道这方面的最佳做法。我认为这是这里的主要问题,抱歉。

查看 .travis.yml 文件或 bash 脚本会很有帮助。

4

2 回答 2

2

我无法为您提供一个可行的示例。但我可以概述我将如何解决这个问题。

您的目标是自动验证 rest api 或类似的。也就是说,确保 Web 应用程序在给定特定问题时以预期的方式响应。

出于某种原因,您想使用 Cucumber。

首先我要提的是,行为驱动开发、BDD 和 Cucumber 不是测试工具。BDD 和 Cucumber 的目的是充当那些知道系统应该做什么、编写代码以实现它的人以及验证行为的人之间的通信工具。这就是为什么这些示例几乎是用一种自然语言编写的。

那我将如何解决这个问题?

  • 我会通过从单元测试或 Cucumber 场景调用构成 API 的方法来验证绝大多数行为。也就是说,验证它们是否在没有运行服务器的情况下正常工作。并且没有数据库。这很快,速度很重要。我可能会以这种方式验证超过 90% 的逻辑。

  • 我将通过启动服务器来验证接线,并验证是否可以使用上一步中验证的方法。这很慢,所以我会在这里尽可能少地做。如果可能的话,我会从用于实现验证的代码中启动服务器。我将启动服务器作为测试设置的一部分。

这不涉及任何外部工具。它只涉及您的编程语言和一些库。这样做的原因是我希望尽可能便携。您使用的工具越少,使用某些东西就越容易。

碰巧我已经在我的构建工具中完成了一些设置,并让它在运行集成测试之前启动了一个服务器。这通常是更重的重量,如果可能的话我会避免。

因此,在没有服务器的情况下验证行为。用服务器验证接线。重要的是仅在此步骤中验证接线。逻辑前面已经验证过了,无需赘述。

速度,就像在快速反馈循环中一样,非常重要。在一个好的世界里,构建和测试整个系统应该只需要几秒钟而不是几分钟。

于 2017-02-03T16:47:00.417 回答
1

如果您有兴趣(在 travis 上运行),我有一个工作示例。我使用 docker-compose 来启动 API 和所需的组件,例如数据库,然后针对正在运行的堆栈运行 cucumber-js 测试。

docker-compose 也用于本地开发和测试。

我还发布了一个库来帮助为 API 编写黄瓜,https://github.com/ekino/veggies

于 2017-06-30T03:36:51.183 回答