【问题标题】:Can PHPUnit temporarily reset system paths before a run?PHPUnit 可以在运行前临时重置系统路径吗?
【发布时间】:2015-02-12 05:34:21
【问题描述】:

我正在使用phpunit-spiderling 和 PHPUnit 在 PhantomJS 上运行浏览器/功能测试,通过 jonnyw/php-phantomjs 安装,然后在 <project>/bin 中安装 phantomjs 二进制文件。由于该文件夹不在系统路径中,因此我需要开始测试:

PATH=$PATH:`pwd`/bin ./phpunit test/browser/tests

这很好用,但我希望在托管 CI 上设置它时需要将其压缩为原始命令,不带环境前缀:

./phpunit test/browser/tests

我尝试使用--bootstrap 命令运行system() 命令来重置系统路径,但无济于事,而且我在手册中看不到任何描述如何通过phpunit.xml 执行此操作的内容。不幸的是,Spiderling 硬连线了 Phantom 命令,它应该在系统路径中可见。

我也尝试过这是一种setUp() 测试方法,但为时已晚 - Spiderling 已经尝试过在随机端口上启动 PhantomJS,但失败了。

(命令./phpunit 只是指向vendor/phpunit/phpunit/phpunit 的符号链接,它是通​​过 Composer 安装的 PHPUnit。)

【问题讨论】:

    标签: php phpunit phantomjs system-paths


    【解决方案1】:

    再回答这个问题,原来是这样的:

    • 托管 CI 工具提供了在 PHPUnit 之外实现这一目标的方法
    • 我正在使用的 Travis 在标准路径中提供 phantomjs

    因此,虽然事实证明我不需要这个,但似乎有两种方法可以实现它。由于我的方法需要执行反引号,我想知道env 方法是否可能不起作用。但是,为了完整起见,以下是两者:

    • env 方法是.travis.yml file 中的一个条目。
    • 您也可以尝试使用带有值的 before_script 键:

      before_script:
        - export PATH=`pwd`/bin:$PATH
      

      由于工作目录应该设置为项目的根目录,pwd 加上子目录应该添加到系统路径的新路径中。

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多