在Behat中,可以使用Symfony HttpKernel的stop重定向功能来停止重定向。下面是一个示例代码:
首先,在FeatureContext文件中添加以下代码:
use Symfony\Component\HttpKernel\Event\RequestEvent;
/**
* @BeforeScenario
*/
public function disableRedirect()
{
// 获取内核
$kernel = $this->getContainer()->get('kernel');
// 添加事件监听器
$kernel->getContainer()->get('event_dispatcher')->addListener(
RequestEvent::class,
function (RequestEvent $event) {
$event->getRequest()->attributes->set('_disable_redirect', true);
},
100
);
}
然后,在Feature文件中的Scenario中添加以下步骤:
Given I disable redirects
最后,在FeatureContext文件的对应步骤方法中添加以下代码:
/**
* @Given I disable redirects
*/
public function iDisableRedirects()
{
// 获取请求对象
$request = $this->getSession()->getDriver()->getClient()->getRequest();
// 设置请求属性以停止重定向
$request->attributes->set('_disable_redirect', true);
}
这样,当执行带有"Given I disable redirects"步骤的Scenario时,将停止任何重定向。