0

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

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。)

4

1 回答 1

1

对于这个问题,事实证明:

  • 托管 CI 工具提供了在 PHPUnit 之外实现这一目标的方法
  • 无论如何,我正在使用的 Travisphantomjs在标准路径中提供

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

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

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

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

于 2014-12-15T20:27:44.147 回答