我正在使用Symfony 3.4和FOSUserBundle以及Behat进行测试。
配置&代码:
Behat config:
extensions:
Behat\MinkExtension:
sessions:
default:
symfony2: ~
javascript:
selenium2: ~
browser_name: firefox
show_auto: false
base_url: 'http://my-virutalhost.test'
Behat\Symfony2Extension:
kernel:
env: "acceptance"
debug: "true"
Scenario: I execute enpoint address with wrong redirect code
When I go to the url "/redirect/code1code2"
Then I should be redirected to url "http://some-page-here.com"
/**
* @When /^I go to the url "([^"]+)"$/
*/
public function iGoToTheUrl($url) {
$this->lastResponse = $this->getSession()->visit($url);
$this->getSession()->getDriver()->getContent();
//var_dump($url, $this->getSession()->getDriver()->getCurrentUrl());
}
/**
* Checks, that current page PATH matches regular expression.
*
* @Then /^(?:|I )should be redirected to (?P<pattern>"(?:[^"]|\\")*")$/
*/
public function iAmRedirectedToUrl($pattern) {
$this->assertSession()->addressMatches($this->fixStepArgument($pattern));
}
问题:
以某种方式Behat从我的应用程序附加到我的重定向网址http://some-page-here.com /登录,这会创建链接:http://some-page-here.com/login。我不知道为什么它会为重定向创建这样的地址。
- 编辑 -
当我检查页面内容$ this-&gt; getSession() - &gt; getDriver() - &gt; getContent()时,我看到登录页面的代码
- 编辑 -
我的安全配置:
access_control:
- { path: ^/redirect, role: IS_AUTHENTICATED_ANONYMOUSLY }
答案 0 :(得分:0)
我会仔细研究Firefox,因为我不认为Behat是罪魁祸首。
据我所知,发生的事情是:
我会查看Firefox正在获取的响应,以确保返回正确的重定向网址。
答案 1 :(得分:0)
你的重定向好吗?如果您的内容页面显示/ login,则When I go to the url "/redirect/code1code2"
必须发送到此页面。
当您使用MinkExtension时,您是否尝试使用默认步骤When I go to '/redirect/code1code2'
?
如果直接When I go to the url 'http://some-page-here.com'
?
对于http://some-page-here.com/login内容,这很奇怪...如果您的网页能够向您显示/登录内容,则必须说它可以访问http://my-virutalhost.test/login