我正在使用phpunit-spiderling和PHPUnit在PhantomJS上运行浏览器/功能测试,通过jonnyw/php-phantomjs安装,这反过来又在<project>/bin
中安装了phantomjs
二进制文件。由于该文件夹不在系统路径中,因此我需要因此启动测试:
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。
进一步回答这个问题,事实证明:
- 托管 CI 工具提供了在 PHPUnit 之外实现此目的的方法
- 我正在使用的特拉维斯无论如何都能在标准路径中提供
phantomjs
因此,虽然事实证明我不需要这个,但似乎有两种方法可以实现它。由于我的方法需要执行反引号,我想知道env
方法是否可能不起作用。但是,为了完整起见,以下是两者:
env
方法是 .travis.yml 文件中的一个条目。-
您也可以尝试使用具有以下值的
before_script
键:before_script: - export PATH=`pwd`/bin:$PATH
由于工作目录应设置为项目的根目录,因此
pwd
和子目录应将新路径添加到系统路径中。