我正在使用Symfony 2.0.15的composer并迁移到最新的Behat 2.4。这是我的composer.json
:
"require-dev": {
"behat/behat": "2.4@stable",
"behat/mink-extension": "*",
"behat/symfony2-extension": "*",
"behat/mink-browserkit-driver": "*",
"behat/mink-goutte-driver": "dev-master",
"behat/common-contexts": "*",
"kriswallsmith/buzz": ">=0.5.0"
}
我跑:php composer.phar update --dev
有一个错误:
Your requirements could not be solved to an installable set of packages.
Problem 1
- Installation request for behat/mink-goutte-driver dev-master -> satisfiable by behat/mink-goutte-driver dev-master.
- don't install fabpot/goutte 1.0.x-dev|install fabpot/goutte dev-master
- behat/mink-goutte-driver dev-master requires fabpot/goutte 1.0.* -> satisfiable by fabpot/goutte 1.0.x-dev.
- Conclusion: remove symfony/symfony v2.0.15
- fabpot/goutte dev-master requires symfony/dom-crawler 2.1.* -> satisfiable by symfony/symfony 2.1.x-dev, symfony/dom-crawler v2.1.0-BETA1, symfony/dom-crawler 2.1.x-dev, symfony/symfony v2.1.0-BETA1.
- Can only install one of: symfony/symfony v2.0.15, symfony/symfony 2.1.x-dev.
- Can only install one of: symfony/symfony v2.1.0-BETA1, symfony/symfony v2.0.15.
- don't install symfony/symfony v2.0.15|don't install symfony/dom-crawler v2.1.0-BETA1
- don't install symfony/dom-crawler 2.1.x-dev|don't install symfony/symfony v2.0.15
- Installation request for symfony/symfony == 2.0.15.0 -> satisfiable by symfony/symfony v2.0.15.
如果我正确理解错误,那是因为fabpot/goutte
包依赖于Symfony 2.1包而不适用于Symfony 2.0。如果我错了,请纠正我。
这是我的behat.yml
:
default:
formatter:
parameters:
paths: false
context:
class: 'Site\PublicBundle\Features\Context\FeatureContext'
parameters:
base_url: 'http://test-anton.site.com'
extensions:
Behat\Symfony2Extension\Extension:
mink_driver: true
bundle: 'PublicBundle'
kernel:
env: test
debug: true
Behat\MinkExtension\Extension:
default_session: symfony2
base_url: 'http://test-anton.site.com'
这是我失败情景的样本:
Scenario: User can view homepage
When I go to "/"
Then the response code should be 200
"When I go to"
- 是一个MinkContext步骤,但是"Then the response code should be 200"
- 是Behat \ CommonContexts \ WebApiContext的一步。当我只使用MinkContext中的步骤 - "Then the response status code should be 200"
时,它可以正常工作。
最后的答案是Behat\CommonContexts\WebApiContext
与Behat 2.4不兼容。
答案 0 :(得分:1)
可能是一个愚蠢的问题,但你使用goutte?我最近经历了一次类似的更新,我只需要mink-browserkit-driver。
我不确定为什么goutte依赖于2.1,使用2.0可能会有风险。如果你确实需要它,请尝试在composer.json中为goutte定义一个自定义存储库(并且对Symfony的要求撒谎)。
<强>更新强>
请注意,错误消息显示“调用成员函数getUri()”。它与getCurrentUri():
有关public function getCurrentUrl()
{
return $this->client->getRequest()->getUri();
}
这意味着客户端在那里,但 getRequest()返回null。这表明还没有提出要求。
您在访问其网址之前是否提出了请求?
安装Goutte无法解决您的问题(根本不需要它)。