【问题标题】:How can I use Github Actions to run Behat tests?如何使用 Github Actions 运行 Behat 测试?
【发布时间】:2021-07-14 22:33:57
【问题描述】:

我正在尝试使用 Github Actions 运行一套 Behat 测试。我已经配置了一个可以成功运行一些单元测试的工作流,但要运行我的 Behat 测试,我需要可以通过 HTTP 访问我的应用程序。

以下是我的工作流 yaml 文件的相关部分:

jobs:
  behat:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: shivammathur/setup-php@verbose
        with:
          php-version: '7.4'
...
      - name: Behat Tests
        run: |
          ACTION_BASE_PATH=`pwd`
          "$ACTION_BASE_PATH"/bin/behat --config behat.github.yml --tags=ci

运行时,每次 Behat 尝试通过 http 访问应用程序时都会出现 curl 错误:

      cURL error 7: Failed to connect to localhost port 80: Connection refused (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) (GuzzleHttp\Exception\ConnectException)
    │
    ╳  Unable to access the response before visiting a page (Behat\Mink\Exception\DriverException)

这可能是因为 Github Actions 尚未配置为在 localhost 端口 80 上服务应用程序。上面引用的文件 behat.github.yml 将 Behat 配置为向 localhost 发出 http 请求。我原以为这将是一个常见的用例,具有简单的解决方案和丰富的文档。但是,我找不到有关配置 Github 操作以运行可通过 HTTP 访问的应用程序的相关文档,并且我开始怀疑我是否误解了有关 Github 操作功能的重要内容。

【问题讨论】:

  • 不知道它在 github 操作中的情况如何,但假设应该是 web 服务器在某处运行,以便应用程序可以通过 http 访问。您可以尝试在另一个进程中运行 php 内置服务器。但我认为使用 docker 会方便得多。

标签: php github-actions behat


【解决方案1】:

curl 无法连接到 localhost 的 80 端口的原因是没有服务器在运行。正如Ilia Yatsenko 建议的那样,需要有一个网络服务器在某个地方运行。

我最终将我的工作流 yaml 文件修改为如下所示:

jobs:
  behat:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: shivammathur/setup-php@verbose
        with:
          php-version: '7.4'
...
      - name: Behat Tests
        run: |
          nohup php -S localhost:8081 -t web/ > phpd.log 2>&1 &
          ACTION_BASE_PATH=`pwd`
          "$ACTION_BASE_PATH"/bin/behat --config behat.github.yml --tags=ci

额外的一行是这一行:

nohup php -S localhost:8081 -t web/ > phpd.log 2>&1 &

这将启动在 localhost:8081 上运行的内置 PHP 网络服务器,并使用 web/ 作为文档根目录。因为没有内置的方式在后台运行 PHP 网络服务器,所以我不得不在这个命令中使用 nohup 并将所有消息输出到一个日志文件,phpd.log

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2022-07-26
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多