我有一个项目,我已经在Behat中编写了功能/场景,现在几乎完成了。我必须在网站上测试symfony派上用场的电子邮件功能。但是,我找不到任何帮助我从Behat中配置symfony的教程。大多数网站都提供Symfony中的Behat而不是其他方式。
这篇文章我发现有一些关于配置的信息,但它并不完整。 http://extensions.behat.org/symfony2
本文http://docs.behat.org/cookbook/using_the_profiler_with_minkbundle.html提供了检查电子邮件功能的代码,但没有说明如何在Behat中配置symfony。我安装了symfony扩展程序。
这是我的composer.json内容:
{
"require": {
"behat/behat": "*",
"behat/mink": "1.4.0",
"behat/mink-goutte-driver": "*",
"behat/mink-selenium-driver": "*",
"behat/mink-selenium2-driver": "*",
"behat/mink-sahi-driver": "*",
"behat/mink-zombie-driver": "*",
"drupal/drupal-extension": "*",
"symfony/process": "*",
"behat/symfony2-extension": "*",
"symfony/form": "*",
"symfony/validator": "*",
"behat/mink-extension": "*",
"symfony/http-kernel": "*",
"fabpot/goutte": "dev-master#5f7fd00"
},
"minimum-stability": "dev",
"config": {
"bin-dir": "bin/"
}
}
有人可以在这里指导我吗?
答案 0 :(得分:10)
在Symfony 2(.2)配置中,您必须将 behat.yml 文件放在根文件夹中,因此与composer.json所在的文件夹相同。
app/
bin/
src/
vendor/
web/
behat.yml
composer.json
这是一个工作 behat.yml :
的示例default:
# ...
extensions:
Behat\Symfony2Extension\Extension: ~
Behat\MinkExtension\Extension:
goutte: ~
selenium2: ~
现在,您必须启动behat init command
指定所需的Bundle:
php bin/behat @AcmeDemoBundle --init
上面的命令将创建一个Features
类,其中包含FeatureContext
类。
在此类中添加方案的方法。在官方 hello world 示例下方:
/**
* @Given /^I am in a directory "([^"]*)"$/
*/
public function iAmInADirectory($dir)
{
if (!file_exists($dir))
mkdir($dir);
chdir($dir);
}
/**
* @Given /^I have a file named "([^"]*)"$/
*/
public function iHaveAFileNamed($file)
{
touch($file);
}
/**
* @When /^I run "([^"]*)"$/
*/
public function iRun($command)
{
exec($command, $output);
$this->output = trim(implode("\n", $output));
}
/**
* @Then /^I should get:$/
*/
public function iShouldGet(PyStringNode $string)
{
if ((string) $string !== $this->output)
throw new \Exception("Actual output is:\n" . $this->output);
}
现在您必须在ls.feature
文件夹中创建功能文件(Features
来自同一示例):
Feature: ls
In order to see the directory structure
As a UNIX user
I need to be able to list the current directory's contents
Scenario: List 2 files in a directory
Given I am in a directory "test"
And I have a file named "foo"
And I have a file named "bar"
When I run "ls"
Then I should get:
"""
bar
foo
"""
因此,您的Features
文件夹将如下所示:
Acme\DemoBundle\Features
|- Context /
|- FeatureContext.php
ls.feature
最后,启动behat并享受!
php bin/behat @AcmeDemoBundle
答案 1 :(得分:1)
使用symfony运行behat所需的依赖项是behat,symfony2-extension,mink和drivers,你可能需要格式化程序才能获得所需的输出。
然后你需要为驱动程序,会话和浏览器配置behat.yml并命名测试套件。
完成此操作后,您需要添加功能和FeatureContext来编写测试场景并定义自定义步骤。
我已经使用behat + mink + selenium + symfony here添加了我的symfony安装的详细配置。请检查它是否适合您。
答案 2 :(得分:0)
我不确定我是否完全理解您要实现的目标,但是您尝试实现Symfony2项目的不同配置这一事实让我觉得您应该使用自定义环境。 See this cookbook article关于如何去做。{/ p>
例如,您可能想要设置一个“behat”环境,该环境具有自己的配置文件(/app/config/config_behat.yml
),并且可以使用您的behat测试中的/app_behat.php/
进行访问。