2016-06-28 13 views
0

Я пытаюсь проверить приложение Laravel от Behat. Существует домашняя страница с полями для имени, электронной почты и кнопки «Регистрация». Я пытаюсь кнопку в behat-тест, чтобы нажать, но у меня есть неисправимая ошибка ошибки: Вызов функции члена нажмите() на нуль (Behat \ Testwork \ вызов \ Exception \ FatalThrowableError)Behat Laravel не найти отправить

Мой HTML:

<html> 
 
    <head> 
 
    </head> 
 
    <title>Registration</title> 
 
    <body> 
 
     <form action="/thanks" name="register"> 
 
      <p align="center"><font size="4"><b>Please, enter your name and e-mail</b></font></p> 
 
      <p align="center"><input name="name" type="text" value="name"></p> 
 
      <p align="center"><input name="email" type="text" value="e-mail"></p> 
 
      <p align="center"><input name="registerButton" type="submit" value="Register"></p> 
 
      <p>&nbsp;</p> 
 
     </form> 
 
    </body> 
 
</html>

Моя функция FeatureContext:

/** 
* @When I press the :submit 
*/ 

public function iPressTheSubmit($submit) { 
    $element=$this->getSession()->getPage()->findButton($submit);  
    $element->click(); 
} 

Сценарий:

Scenario: Register Test 
Given I am on the homepage 
When I press the "registerButton" 
Then I should be on "/thanks" 

Выход:

Scenario: Register Test # features/regpage.feature:4 Given I am on the homepage # FeatureContext::iAmOnHomepage() When I press the "registerButton" submit # FeatureContext::iPressTheSubmit() Fatal error: Call to a member function press() on null (Behat\Testwork\Call\Exception\FatalThrowableError) Then I should be on "/thanks" # FeatureContext::assertPageAddress() --- Failed scenarios: features/regpage.feature:4 1 scenario (1 failed) 3 steps (1 passed, 1 failed, 1 skipped)

behat.yml: default: extensions: Laracasts\Behat: # env_path: .env.behat Behat\MinkExtension: default_session: laravel base_url: localhost:8000 laravel: ~

+0

Фатальная ошибка, потому что элемент не найден и findButton возвращает null, и вы пытаетесь нажать на null. используйте условие ожидания для ожидания элемента, который выдает исключение, если элемент не найден. вы пробовали $ this-> getSession() -> getPage() -> pressButton ('yourButton'); ? – lauda

ответ

1

Я установил его с 2 шага: 1. Настройка параметров APP_KEY в .env и .env.behat файлов 2. Закрепление FeatureContent файл, как это:

/** 
* @When I press the :arg1 
*/ 
public function iPressThe($arg1) 
{ 
    $element=$this->getSession()->getPage()->find('named', array('id_or_name', $arg1)); 
    $element->press(); 
} 
0

Не Behat разобрать PHP заголовочный блок выше пользовательских методов FeatureContext?

@When I press the :submit выглядит как его синтаксис синтаксиса jQuery, который Behat не может использоваться или использоваться. Взгляните на аналогичные примеры в базовом классе FeatureContext.

+0

это синтаксис стандартного поведения http://docs.behat.org/en/v3.0/guides/4.contexts.html – Olga