我有一个遗留的 Symfony 2.0 项目(准确地说是版本 2.0.11),我想向其中添加行为测试。 由于它是 Symfony 2.0,因此它使用
deps
供应商系统而不是 Composer。 我目前无法升级 Symfony 版本或切换到 Composer。
我尝试使用以下 deps 设置安装 behat:
[Mink]
target=/Behat/Mink
git=git://github.com/Behat/Mink.git
version=v1.3.3
[MinkBundle]
target=/Behat/MinkBundle
git=git://github.com/Behat/MinkBundle.git
[BehatBundle]
target=/Behat/BehatBundle
git=git://github.com/Behat/BehatBundle.git
[Gherkin]
target=/Behat/Gherkin
git=git://github.com/Behat/Gherkin.git
version=v2.1.1
[Behat]
target=/Behat/Behat
git=git://github.com/Behat/Behat.git
version=v2.3.5
[Goutte]
target=/Goutte
git=git://github.com/fabpot/Goutte.git
(是的,我知道 BehatBundle 等已经过时了,但考虑到我正在使用 deps 和 sf2.0,看起来我需要这些过时的版本。)
当我运行
vendor/Behat/Behat/bin/behat
时,我会得到描述的问题here:
PHP Warning: require_once(behat/autoload.php): failed to open stream: No such file or directory in /home/sam/wo-code/PersonaBubble/vendor/Behat/Behat/bin/behat on line 23
PHP Fatal error: require_once(): Failed opening required 'behat/autoload.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/sam/wo-code/PersonaBubble/vendor/Behat/Behat/bin/behat on line 23
我意识到 behat 2.3.5 实际上没有
autoload.php
文件。 我查看了 Behat 在 Github 上的标签,发现 2.1.3 是最新版本,有一个 autoload.php
(实际上是 autoload.php.dist
,尽管每个早期版本也有 autoload.php.dist
而不是 autoload.php
,所以我认为就是这样)。
因此,我将
deps
中的行为版本号更改为 v2.1.3
,删除了我的供应商并重新安装。 behat 命令随后发生了变化,所以我运行:
php vendor/Behat/Behat/bin/behat.php
我现在看到了这个错误:
PHP Fatal error: Class 'Symfony\Component\Console\Application' not found in /home/sam/wo-code/PersonaBubble/vendor/Behat/Behat/src/Behat/Behat/Console/BehatApplication.php on line 26
有谁知道我应该使用什么正确的 behat 版本来让它与 Symfony 2.0 和 deps 一起工作? 或者我还缺少其他一些步骤。
PS 我最终通过 PHAR 运行行为(尽管这还有其他问题所以我放弃了它,因为不值得)。 然而,我真的想知道如何通过标准供应商安装来做到这一点,因此这篇文章。
我无法升级 Symfony 版本或切换到 目前作曲家。
我明白你所说的,但我希望下面的例子可能会给你一些提示!我希望它能有点帮助。
我正在分享我在所有 Symfony2 项目中使用的内容。贝哈特+水貂+硒
构想者:
您需要某些版本,以便每个人都使用相同版本的所有内容。
mySymfonyProject/composer.json:
"require": {
"behat/behat": "2.5.*@stable",
"behat/behat-bundle": "1.0.0",
"behat/symfony2-extension": "1.1.2",
"behat/mink": "1.5.0",
"behat/mink-extension": "~1.3",
"behat/mink-selenium2-driver": "1.1.1",
"behat/mink-goutte-driver": "1.0.9"
},
"config": {
"bin-dir": "bin"
},
"minimum-stability": "dev",
行为
mySymfonyProject/behat.yml:
default:
context:
class: FeatureContext
extensions:
Behat\Symfony2Extension\Extension:
mink_driver: true
kernel:
env: test
debug: true
Behat\MinkExtension\Extension:
base_url: 'http://mysymfonyproject.local/app_test.php/'
javascript_session: selenium2
browser_name: firefox
goutte: ~
selenium2: ~
paths:
features: %behat.paths.base%/src
bootstrap: %behat.paths.features%/Context
硒
下载到您的项目中。它是这里,确保您下载的是页面中间的2.43.1版本。
运行它:
java -jar selenium-server-standalone-2.43.1.jar
上下文功能
mySymfonyProject/src/Site/CommonBundle/Features/Context/FeatureContext.php
<?php
namespace Site\CommonBundle\Features\Context;
use Behat\MinkExtension\Context\MinkContext;
use Behat\Symfony2Extension\Context\KernelAwareInterface;
use Symfony\Component\HttpKernel\KernelInterface;
class FeatureContext extends MinkContext implements KernelAwareInterface
{
/**
* Hold Symfony kernel object.
*
* @var object Kernel Object.
*/
protected $kernel;
/**
* Helps to use doctrine and entity manager.
*
* @param KernelInterface $kernelInterface Interface for getting Kernel.
*/
public function setKernel(KernelInterface $kernelInterface)
{
$this->kernel = $kernelInterface;
}
//And your own methods
}
测试
当您有功能文件时,您可以像这样运行它们(这会一次性运行。有关更多信息,请阅读 behat 文档):
bin/behat @SiteCommonBundle