我在使用Behat和Mink时遇到了一些问题。使用的驱动程序是Goutte。我正在尝试测试我的Symfony 2.1应用程序。
我的 behat.yml :
default:
extensions:
Behat\Symfony2Extension\Extension:
mink_driver: true
Behat\MinkExtension\Extension:
base_url: 'http://localhost/project/web/app_dev.php'
goutte: ~
我的 test.feature :
Feature: Test
In order to log-in
As a user
I need to be able to use the login-form
Scenario: Logging in
Given I am on "/login"
When I fill in "username" with "admin"
And I fill in "password" with "password"
And I press "_submit"
Then show last response
Then I should see "Hello"
当我尝试执行测试时(在Windows 7上):
bin\behat @MyTestBundle
测试停在
我按“_submit”
出现此错误:
Current URI must be an absolute URL ("/app_dev.php").
我已经尝试了几乎所有可能的base_url路径,但我没有设法让它工作。
您是否知道如何解决此问题?
我尝试提交的表单:
<form action="/app_dev.php/login_check" class="form-horizontal" method="post">
<fieldset>
<div class="control-group">
<label class="control-label" for="username">Nazwa użytkownika:</label>
<div class="controls"><input type="text" id="username" name="_username" value=""/></div>
</div>
<div class="control-group">
<label for="password" class="control-label">Hasło:</label>
<div class="controls"><input type="password" id="password" name="_password"/></div>
</div>
<div class="control-group">
<div class="controls">
<label for="remember_me" class="checkbox">
<input type="checkbox" id="remember_me" name="_remember_me" value="on"/>Nie wylogowuj mnie
</label>
</div>
</div>
<div class="form-actions">
<input type="submit" class="btn-primary" id="_submit" name="_submit"
value="Zaloguj"/>
<a href="/app_dev.php/register/" class="btn btn-success">Rejestracja</a>
</div>
</fieldset>
</form>
答案 0 :(得分:1)
在你的twig模板中,当你创建login_check url时,你必须创建一个绝对url(path的第三个参数,为true来创建一个绝对url):
{{ path('route', {}, true) }}
答案 1 :(得分:1)
我今天找到了解决问题的方法。
确实问题出现在路径功能中。 路径函数应替换为twig url 函数。
有趣的是:在表单操作属性中将函数更改为 url 将无济于事。在我的基础布局中,我有:
<base href="{{ path('_default')}}"/>
这一行代码引起了问题,应该是:
<base href="{{ url('_default')}}"/>
此更改后,测试按预期工作。