我的作曲家:
"require-dev": {
"polishsymfonycommunity/symfony2-mocker-extension": "*",
"behat/gherkin" : "~2.2.9",
"behat/behat": "v2.4.6",
"behat/symfony2-extension": "*",
"behat/mink-extension": "*",
"behat/mink-goutte-driver": "*",
"behat/mink-selenium2-driver": "*",
"phpunit/phpunit": "3.7.29"
},
我的专辑:
Feature: Submitting contact request form
Scenario: Submitting the form
And CRM API is available
Then the contact request should be sent to the CRM
Behat的错误:
Feature: Submitting contact request form
Scenario: Submitting the form
And CRM API is available
Session has no access to client container
Then the contact request should be sent to the CRM
我在mi app / AppKernel()
中添加了getContainerBaseClass/**
* @return string
*/
protected function getContainerBaseClass()
{
if ('test' == $this->environment) {
return '\PSS\SymfonyMockerContainer\DependencyInjection\MockerContainer';
}
return parent::getContainerBaseClass();
}
我的FeatureContext中的新句子:
class GeeftyContext extends MinkContext
implements KernelAwareInterface, ServiceMockerAwareInterface
{
/**
* @var ServiceMocker $mocker
*/
private $mocker = null;
/**
* @param ServiceMocker $mocker
* @return null|void
*/
public function setServiceMocker(ServiceMocker $mocker)
{
$this->mocker = $mocker;
}
/**
* @Given /^CRM API is available$/
*/
public function crmApiIsAvailable()
{
$this->mocker->mockService(
'my_service',
'Acme\Bundle\My\ServiceClass'
)->shouldReceive('method')->once()->andReturn(true);
}
/**
* @Then /^the contact request should be sent to the CRM$/
*/
public function theContactRequestShouldBeSentToTheCrm()
{
throw new PendingException();
}
}
答案 0 :(得分:0)
Symfony Mocker Extension仅适用于Symfony2 mink驱动程序。我猜你正在尝试将其与其他驱动程序一起使用。
在技术上不可能将它与Symfony2以外的驱动程序一起使用。当使用selenium2或goutte等驱动程序时,请求将在一个单独的进程中处理(对于Symfony2驱动程序,它是相同的进程)。
异常消息is a bit missleading。我鼓励您向the project发送PR以改进它。
编辑:如Symfony2MockerExtension#5中所述,该扩展程序仅适用于symfony2会话。您可以将其设置为默认值,如下例所示,或使用@mink:symfony2
注释功能/方案。
default:
context:
class: 'Acme\DemoBundle\Features\Context\FeatureContext'
extensions:
PSS\Behat\Symfony2MockerExtension\Extension: ~
Behat\Symfony2Extension\Extension:
Behat\MinkExtension\Extension:
default_session: symfony2
show_cmd: open %s
base_url: 'http://my.web/site/'
selenium2: ~
goutte: ~