2015-02-13 7 views
1

Я хочу проверить маршрут для добавления события. Но проблема в том, что: этот метод отправки много аргументов в POST о: 50. Я пробовал:Рекомендации по использованию Behat

Scenario Outline: Check Api Simple Test 
Given I use http method "POST" 
And I have param "sEventType" with value "<sEventType>" 
And I have param "aFilters[]" with value "<aFilters[]>" 
And I have param "nCompany" with value "<nCompany>" 
.................................................. 
And I call url "<path>" 
And I should to have "code" with value "<code>" 
And I should to have "error" with value "<error>" 
Examples : 
|path ........ 
|.............. 

Для многих многих аргументов это примеры сделает функцию неразборчиво. Какова наилучшая практика для тестирования этого маршрута с множеством аргументов. Пожалуйста, помогите мне и спасибо заранее!

ответ

2

Функциональный тест с длинным списком шагов - это анти-шаблон. Делайте больше на каждом шаге, написанном в коде, а затем повторно используйте эти шаги по мере необходимости. У меня есть некоторые особенности контекста, которые просто тянут несколько черт, которые могут работать вместе, чтобы делать то, что мне нужно.

Иногда код может быть списком того, что было бы веб-шагами (у меня есть функция регистрации, которая посещает ('url') fillFields(), pressButton()), в другое время они читают или пишите в базу данных.

0

Behat предназначен для приемо-сдаточных испытаний, то, что вы пытаетесь назвать интеграционным тестом.

Если вы хотите опубликовать это сообщение, просто посетите (url), по желанию заполните форму и отправьте. Именно ваши пользователи должны будут заполнить форму. Если это слишком много для вас, может быть, это слишком много для вас пользователей.

When I fill in "form_element_name" with "value" 
And I press "submit" 
Then I should see "resultz" 

Однако если это действительно то, что вам нужно, создать определение шага «опубликовать много Варс» и реализовать подробности в файле контекста.

Я бы использовал интеграционный тест для тестирования контроллера, когда это только точка api-endpoint.

0

В качестве альтернативы можно использовать TableNodes (я знаю, что я немного опоздал на вечеринку), но в действительности, если вы используете что-то вроде этого фрагмента кода:

/** 
    * @Then /^I have the following param(?:|eter)s with values:$/ 
    */ 
    public 
    function iHaveTheFollowingParamsWithValues(TableNode $table) 
    { 
     foreach ($table->getRowsHash() as $param => $value) { 
      $this->iHaveParamWithValue($param, $value); 
     } 
    } 

И:

/** 
    * @Then /^I should have the following codes with values:$/ 
    */ 
    public 
    function iShouldHaveTheFollowingCodesWithValues(TableNode $table) 
    { 
     foreach ($table->getRowsHash() as $code => $value) { 
      $this->iShouldHaveCodeWithValue($code, $value); 
     } 
    } 

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

Такие, как:

Scenario Outline: Check Api Simple Test 
Given I use http method "POST" 

And I have the following params with values: 
     |sEventType|<sEventType>| 
     |aFilters[]|<aFilters[]>| 
     |nCompany |<nCompany> | 
.................................................. 
And I call url "<path>" 

And I should have the following codes with values: 
     |code |<code> | 
     |error|<error>| 

Examples : 
|path ........ 
|.............. 

Это должно помочь с дискретностью и ускорить как тест написание и выполнение тестов на небольшую величину.

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

  • Нет связанных вопросов^_^