行为驱动开发

BDD 通过使用人类可读的故事来实施测试。

例如,Cucumber 就是一种通过使用以普通英语编写的人类可读特征文件来实现 BDD 工作流程的工具:

Feature: Log in to site.
    In order to see my profile
        As a user
        I need to log-in to the site.

Scenario: Logs in to the site
    Given I am on "/"
    When I follow "Log In"
        And I fill in "Username" with "admin"
        And I fill in "Password" with "test"
        And I press "Log in"
    Then I should see "Log out"
        And I should see "My account"

现在,本节将对 Behat 进行简单介绍,以激发您的好奇心。如果你想了解更多,请访问 http://www.behat.org。

Behat 指南包含一个 ls 命令的用户故事示例。这是一个相当不错的示例,所以就在这里了:

Feature: ls
    In order to see the directory structure
    As a UNIX user
    I need to be able to list the current directory's contents

Scenario: List 2 files in a directory
    Given I am in a directory "test"
        And I have a file named "foo"
        And I have a file named "bar"
    When I run "ls"
    Then I should get:
        """
        bar
        foo
        """

为了安装 Behat,您可以修改您的 composer.json 文件,以便在开发环境中需要它:

{
    "require-dev": {
      "behat/behat": "~2.5"
    },
    "config": {
      "bin-dir": "bin/"
    }
}

这将安装 Behat 2.5 版本,此外还有 Behat 3 版本,该版本包含了一整套新功能,同时又不失向后兼容性。尽管如此,许多项目仍在使用 Behat 2。

然后,您可以使用以下命令运行 Behat:

bin/behat

输出结果如下:

image 2023 10 31 19 19 02 958

TODO 未完成

总结

在本章中,我试图解决一些未解决的问题。我们通过了解 HTTP 讨论了 Web 开发的一些网络方面。除此之外,我们还了解了如何有效地设计 RESTful API。

本书即将结束;让我们重新审视一些使我们的代码变得优秀的核心价值观:

  • 偏爱组合而非继承

  • 避免重复编码(DRY 原则的意思是不要重复自己)

  • 保持简单、愚蠢

  • 不要为了使用设计模式而使用设计模式,当你发现设计模式可以解决重复出现的问题时,再引入设计模式

  • 抽象是了不起的,接口可以帮助你抽象

  • 按照良好的标准编写代码

  • 在整个代码中分清责任

  • 使用依赖管理和依赖注入;现在可以使用 Composer

  • 测试可节省开发时间;测试对任何重构工作都至关重要,并可减少故障

感谢您阅读这本书;这本书是我对软件开发的一些想法的集合;在经历了极其多样化的职业生涯后,我学到了很多惨痛的教训,也重构了很多难看的代码。我见过一些最糟糕的情况,但我也参与了一些最令人兴奋的 PHP 项目。我希望在这本书中,我能分享我在这个领域的一些经验。

开发人员很容易将自己隐藏在开发的现实之外;很少有人知道软件设计和架构的最佳实践,而且只有很少的人选择 PHP 作为他们的开发语言。

对我们大多数人来说,我们生产的代码不仅仅是一种爱好或工作,它是我们作为软件工程师的表达极限。因此,以一种富有诗意、富有表现力和持久的方式编写代码是我们的责任。

想想你希望维护的代码;你有责任生成的代码。极简主义、降低复杂性和分离关注点是实现这一目标的关键。

计算机科学可能以数学和定理为基础,但我们的代码凌驾于其上。通过利用图灵完备语言的基础,我们能够编写具有创造性和功能的代码。

与其他许多学科相比,软件工程处于一个奇怪的真空状态;虽然非常度量化,但它也必须吸引人类。我希望这本书能帮助你实现这些目标。