1

我在 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>
4

2 回答 2

1

在您的 twig 模板中,当您创建 login_check url 时,您必须创建一个绝对 url(path 的第三个参数,为 true 以创建一个绝对 url):

{{ path('route', {}, true) }}
于 2012-09-17T19:58:54.143 回答
1

我今天找到了解决问题的方法。

确实问题出在路径功能中。path函数应该替换为 twig url函数

有趣的是:在表单操作属性中将函数更改为url将无济于事。在我的基本布局中,我有:

<base href="{{ path('_default')}}"/>

这一行代码导致了问题,应该是:

<base href="{{ url('_default')}}"/>

在此更改之后,测试按预期工作。

于 2012-10-26T18:51:36.117 回答