PHPUnit可以在运行之前临时重置系统路径吗?

时间:2014-12-13 17:38:07

标签: php phpunit phantomjs system-paths

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

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

这样可以正常工作,但是当我在托管CI上设置它时,我希望我需要将它压缩到raw命令中,而不使用环境前缀:

./phpunit test/browser/tests

我已经尝试使用--bootstrap命令来运行system()命令来重置系统路径,但无法使用,我在手册中看不到任何描述如何通过phpunit.xml。不幸的是,Spiderling硬连接了Phantom命令,并且它在系统路径中是可见的。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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