2015-05-07 2 views
0

Я использую Symfony2, и у меня есть проблема с Behat. Мой Сценарий:Behat заканчивается при нажатии кнопки Отправить форму

Сценарий: Добавить форму
Когда путь доступа " symfony_route_path "
Затем данные формы Заливка х
Затем Нажмите БТН " id_btn_form_submit "

И контексты:

(класс FormContext расширяет DefaultContext, который немного похож ->https://github.com/Sylius/Sylius/blob/master/src/Sylius/Bundle/ResourceBundle/Behat/DefaultContext.php)

/** 
* @Then Fill data form x 
*/ 
public function fillData() 
{ 
    $this->fillField('field_x[name]', 'name'); 
    $this->fillField('field_y[address]', 'Address'); 
} 

(класс BaseContext простирается RawMinkContext)

/** 
* @Then Push btn :button 
*/ 
public function pressBtn($button) 
{ 
    $this->getSession()->getPage()->pressButton($button); 
} 

Выход консоли выполняет в ' Заполните форму данных x '(запускает метод полностью), но не показывает' Push btn '. Кто-то испытал подобную проблему и мог мне помочь? Я благодарю тебя.

ответ

0

Это делается, как показано ниже, вам не нужно реализовывать какой-либо дополнительный метод в контексте класса.

Читайте также cheatsheet.

Given I am on "url" 
When I fill in "form_element" with "value" 
Then I press "button" 
+0

Привет @BentCoder спасибо за PDF, это хорошо быть полезным. Но даже с «I press» не сработало. Другая проблема заключается в том, что я говорю по-португальски, поэтому мне нужно написать сценарии на португальском языке. Настоящим контекстом является опция «@Then Precionar botão: button» – dhanielo

+0

@dhanielo * then * предложения должны быть для утверждений, а не для действий. – mloureiro

1

Попробуйте следующее: Я нажимаю на кнопку «.

У меня были некоторые проблемы с ним и решить ее таким образом

О переводе, я не совсем уверен, если есть некоторые лучшее решение, но я хотел бы создать PortugueseContext и вызвать метод, который вы хотите оттуда, так что ...

public class overrideMinkContextPortuguese extends MinkContext 
{ 
    /* 
    * @When Precionar botao :button 
    */ 
    public function precionarBotao($button) 
    { 
     $this->pressButton($button); 
    } 

Но, вероятно, есть лучший способ ...

+0

Это должен быть комментарий (если у вас есть [достаточно репутации] (http://stackoverflow.com/help/privileges), чтобы добавить его) вместо ответа. Пожалуйста, обратитесь к [Секции справки] (http://stackoverflow.com/help/whats-reputation), чтобы узнать, как заработать репутацию и, следовательно, иметь возможность комментировать. – mathielo

Смежные вопросы