第 6 章 应用行为驱动开发

在上一章中,我们学习了如何创建和使用单元测试来发挥我们的优势。我们使用 单元测试集成测试 来帮助确保解决方案代码的稳定性。这可能就像学习如何在沙袋上打基本拳一样。如果你去上拳击课,他们可能会教你如何更有效地使用基本拳法,教你如何使用基本拳法打出组合拳,以及如何防御组合拳。这就好比 行为驱动开发BDD)和 测试驱动开发TDD)。我们首先需要从基础开始:单元测试集成测试。有了这些基础知识,我们就可以开始应用流程或技术,以便更有效地使用它们。

很多开发人员都知道如何编写 单元测试集成测试,毕竟这些测试只是我们开发人员编写的程序。根据我的个人经验,我发现很多开发人员并不知道如何在项目中有效利用 单元测试集成测试。有些开发人员知道如何编写单元测试,但却无法为自己的项目编写单元测试。因此,仅仅掌握如何编写单元测试的基本知识或技术知识并不足以帮助改进项目。有效地应用和使用单元测试才是关键。

有了 BDDTDD,这就是我们要做的。我们将按照流程利用这些测试技能来帮助我们构建示例项目。

在本章中,我们将讨论以下主题:

  • 什么是 BDD

  • 使用 Behat 和 Gherkin 应用 BDD

  • 基于 Gherkin 编写 PHP 代码

  • 浏览器模拟器和 Mink

  • 为什么要使用 Gherkin?

本章结束时,你将能够编写行为驱动的功能、场景和解决方案代码。

技术要求

本章要求您拥有我们在 第 5 章 “单元测试” 中使用的所有容器、配置和测试工具。 您可以从此 URL 下载源文件并运行容器: https://github.com/PacktPublishing/Test-Driven-Developmentwith-PHP-8/tree/main/Chapter%205

准备章节的开发环境

首先,获取第 6 章的基本代码,可在 https://github.com/PacktPublishing/Test-Driven-Development-with-PHP-8/tree/main/Chapter%206/base/phptdd 中找到,或者只需运行以下命令:

curl -Lo phptdd.zip "https://github.com/PacktPublishing/TestDriven-Development-with-PHP-8/raw/main/Chapter%206/base.zip" && unzip -o phptdd.zip && cd base && ./demoSetup.sh

要运行容器并执行本章中的命令,您应该位于 docker-server-web-1 容器内。

运行以下命令来确认我们的 Web 服务器的容器名称:

docker ps

要运行容器,请从主机存储库的 /phptdd/docker 目录运行以下命令:

docker-compose build && docker-compose up -d
docker exec -it docker_server-web_1 /bin/bash

进入容器后,运行以下命令通过 Composer 安装所需的库:

/var/www/html/symfony# ./setup.sh