Spec-Zone.ru › Codeception

Phalcon4

Установка

Если вы используете Codeception, установленный с помощью Composer, установите этот модуль с помощью следующей команды:

composer require --dev codeception/module-phalcon4

В качестве альтернативы, вы можете включить Phalcon4 модуль в файле конфигурации комплекта и выполнить

codecept init upgrade4

Этот модуль был включён в Codeception 2 и 3, но с версии 4 его необходимо устанавливать отдельно.
Некоторые модули поставляются с файлами PHAR.
Предупреждение. Использование файла PHAR и Composer в одном проекте может вызвать непредвиденные ошибки.

Описание

Этот модуль обеспечивает интеграцию с фреймворком Phalcon (4.x). Пожалуйста, попробуйте его и оставьте свой отзыв.

Статус

  • Поддержка: Ruud Boon
  • Устойчивость: стабильная
  • Контакты: team@phalcon.io

Конфигурация

Для этого модуля требуются следующие настройки:

  • bootstrap: string, по умолчанию app/config/bootstrap.php - относительный путь к файлу конфигурации app.php
  • cleanup: boolean, по умолчанию true - все запросы к базе данных будут выполнены в транзакции, которая будет отменена в конце каждого теста
  • savepoints: boolean, по умолчанию true - использование точек сохранения для эмуляции вложенных транзакций

Файл загрузки приложения должен возвращать объект Application, но не вызывать его метод handle().

API

  • di - Phalcon\Di\Injectable экземпляр
  • client - BrowserKit клиент

Части

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

  • orm - включить только haveRecord/grabRecord/seeRecord/dontSeeRecord действия.
  • services - позволяет использовать grabServiceFromContainer и addServiceToContainer.

См. модуль WebDriver для общей информации о загрузке частей модуля фреймворка.

Пример использования:

Образец загрузки (app/config/bootstrap.php):

<?php
$di = new \Phalcon\DI\FactoryDefault();
return new \Phalcon\Mvc\Application($di);
?>
actor: AcceptanceTester
modules:
    enabled:
        - Phalcon4:
            part: services
            bootstrap: 'app/config/bootstrap.php'
            cleanup: true
            savepoints: true
        - WebDriver:
            url: http://your-url.com
            browser: phantomjs

Действия

_findElements

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

Определяет элемент с использованием доступных типов локаторов Codeception:

  • XPath
  • CSS
  • Строгий локатор

Используйте его в классах-помощниках или классах GroupObject или Extension:

<?php
$els = $this->getModule('Phalcon4')->_findElements('.items');
$els = $this->getModule('Phalcon4')->_findElements(['name' => 'username']);

$editLinks = $this->getModule('Phalcon4')->_findElements(['link' => 'Edit']);
// now you can iterate over $editLinks and check that all them have valid hrefs

Модуль WebDriver возвращает Facebook\WebDriver\Remote\RemoteWebElement экземпляры PhpBrowser и модули Framework возвращают Symfony\Component\DomCrawler\Crawler экземпляры

  • param $locator
  • return array интерактивных элементов

_getResponseContent

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

Возвращает содержимое последнего ответа. Используйте его в классах-помощниках, когда вам нужно получить ответ на запрос, выполненный другим модулем.

<?php
// in Helper class
public function seeResponseContains($text)
{
   $this->assertStringContainsString($text, $this->getModule('Phalcon4')->_getResponseContent(), "response contains");
}
  • return string @throws ModuleException

_loadPage

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

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

<?php
// in Helper class
public function openCheckoutFormStep2($orderId) {
    $this->getModule('Phalcon4')->_loadPage('POST', '/checkout/step2', ['order' => $orderId]);
}
  • param string $method
  • param string $uri
  • param string $content

_request

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

Отправляет пользовательский запрос на бэкенд, используя метод, URI, параметры и т. д. Используйте его в классах-помощниках, чтобы создать специальные действия запроса, такие как доступ к API. Возвращает строку с телом ответа.

<?php
// in Helper class
public function createUserByApi($name) {
    $userData = $this->getModule('Phalcon4')->_request('POST', '/api/v1/users', ['name' => $name]);
    $user = json_decode($userData);
    return $user->id;
}

Не загружает ответ в модуль, поэтому вы не можете взаимодействовать со страницей ответа (нажимать, заполнять формы). Для загрузки произвольной страницы для взаимодействия используйте метод _loadPage.

  • param string $method
  • param string $uri
  • param string $content
  • return string @throws ExternalUrlException @see _loadPage

_savePageSource

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

Сохраняет исходный код страницы в файл

$this->getModule('Phalcon4')->_savePageSource(codecept_output_dir().'page.html');
  • param $filename

addServiceToContainer

Регистрирует сервис в контейнере сервисов и разрешает его. Эта запись будет удалена после теста. Рекомендуется использовать для тестирования юнит-тестов.

<?php
$filter = $I->addServiceToContainer('filter', ['className' => '\Phalcon\Filter']);
$filter = $I->addServiceToContainer('answer', function () {
     return rand(0, 1) ? 'Yes' : 'No';
}, true);
  • param string $name
  • param mixed $definition
  • param boolean $shared
  • return mixed|null
  • [Part] services

amHttpAuthenticated

Авторизует пользователя для HTTP_AUTH

  • param string $username
  • param string $password

amOnPage

Открывает страницу для указанного относительного URI.

<?php
// opens front page
$I->amOnPage('/');
// opens /register page
$I->amOnPage('/register');
  • param string $page

amOnRoute

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

<?php
$I->amOnRoute('posts.create');
  • param string $routeName
  • param array $params

attachFile

Прикрепляет файл, относительный к каталогу Codeception _data, к указанному полю загрузки файла.

<?php
// file is stored in 'tests/_data/prices.xls'
$I->attachFile('input[@type="file"]', 'prices.xls');
?>
  • param $field
  • param $filename

checkOption

Отмечает чекбокс. Для радиокнопок используйте метод selectOption вместо этого.

<?php
$I->checkOption('#agree');
?>
  • param $option

click

Выполняет щелчок по ссылке или кнопке, заданной локатором. Если задан размытый локатор, страница будет просмотрена на наличие кнопки, ссылки или изображения, соответствующего строке локатора. Для кнопок ищется атрибут «value», атрибут «name» и внутренний текст. Для ссылок ищется текст ссылки. Для изображений ищется атрибут «alt» и внутренний текст любых родительских ссылок.

Второй параметр — контекст (локатор CSS или XPath) для сужения поиска.

Обратите внимание, что если локатор соответствует кнопке типа submit, форма будет отправлена.

<?php
// simple link
$I->click('Logout');
// button of form
$I->click('Submit');
// CSS button
$I->click('#form input[type=submit]');
// XPath
$I->click('//form/*[@type="submit"]');
// link in context
$I->click('Logout', '#nav');
// using strict locator
$I->click(['link' => 'Login']);
?>
  • param $link
  • param $context

deleteHeader

Удаляет заголовок с заданным именем. Последующие запросы не будут содержать удалённый заголовок в своём запросе.

Пример:

<?php
$I->haveHttpHeader('X-Requested-With', 'Codeception');
$I->amOnPage('test-headers.php');
// ...
$I->deleteHeader('X-Requested-With');
$I->amOnPage('some-other-page.php');
  • param string $name имя заголовка для удаления.

dontSee

Проверяет, что на текущей странице отсутствует указанный текст (не учитывается регистр). В качестве второго параметра укажите локатор для сопоставления с определённым регионом.

<?php
$I->dontSee('Login');                         // I can suppose user is already logged in
$I->dontSee('Sign Up','h1');                  // I can suppose it's not a signup page
$I->dontSee('Sign Up','//body/h1');           // with XPath
$I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator

Обратите внимание, что поиск выполняется после удаления всех тегов HTML из тела, поэтому $I->dontSee('strong') не сработает для строк вроде:

  • <p>I am Stronger than thou</p>
  • <script>document.createElement('strong');</script>

Но проигнорирует строки вроде:

  • <strong>Home</strong>
  • <div class="strong">Home</strong>
  • <!-- strong -->

Для проверки исходного кода используйте seeInSource().

  • param string $text
  • param array|string $selector необязательный

dontSeeCheckboxIsChecked

Проверить, что указанный чекбокс не отмечен.

<?php
$I->dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms
$I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form.
?>
  • param $checkbox

dontSeeCookie

Проверяет, что куки с заданным именем отсутствует. Вы можете задать дополнительные параметры куки, такие как domain, path, как массив, переданный в последнем аргументе.

  • param $cookie

  • param array $params

dontSeeCurrentUrlEquals

Проверяет, что текущий URL не равен заданной строке. В отличие от dontSeeInCurrentUrl, это соответствует только полному URL.

<?php
// current url is not root
$I->dontSeeCurrentUrlEquals('/');
?>
  • param string $uri

dontSeeCurrentUrlMatches

Проверяет, что текущий URL не соответствует заданному регулярному выражению.

<?php
// to match root url
$I->dontSeeCurrentUrlMatches('~^/users/(\d+)~');
?>
  • param string $uri

dontSeeElement

Проверяет, что заданный элемент невидим или отсутствует на странице. Вы также можете указать ожидаемые атрибуты этого элемента.

<?php
$I->dontSeeElement('.error');
$I->dontSeeElement('//form/input[1]');
$I->dontSeeElement('input', ['name' => 'login']);
$I->dontSeeElement('input', ['value' => '123456']);
?>
  • param $selector
  • param array $attributes

dontSeeInCurrentUrl

Проверяет, что текущий URI не содержит заданную строку.

<?php
$I->dontSeeInCurrentUrl('/users/');
?>
  • param string $uri

dontSeeInField

Проверяет, что поле ввода или текстовая область не содержит заданного значения. Для размытых локаторов поле сопоставляется по тексту метки, CSS и XPath.

<?php
$I->dontSeeInField('Body','Type your comment here');
$I->dontSeeInField('form textarea[name=body]','Type your comment here');
$I->dontSeeInField('form input[type=hidden]','hidden_value');
$I->dontSeeInField('#searchform input','Search');
$I->dontSeeInField('//form/*[@name=search]','Search');
$I->dontSeeInField(['name' => 'search'], 'Search');
?>
  • param $field
  • param $value

dontSeeInFormFields

Проверяет, что массив параметров формы (имя => значение) не задан в форме, соответствующей переданному селектору.

<?php
$I->dontSeeInFormFields('form[name=myform]', [
     'input1' => 'non-existent value',
     'input2' => 'other non-existent value',
]);
?>

Чтобы проверить, что элементу не было присвоено ни одно из множества значений, можно передать массив в качестве значения:

<?php
$I->dontSeeInFormFields('.form-class', [
     'fieldName' => [
         'This value shouldn\'t be set',
         'And this value shouldn\'t be set',
     ],
]);
?>

Кроме того, значения чекбоксов можно проверить с помощью булевых значений.

<?php
$I->dontSeeInFormFields('#form-id', [
     'checkbox1' => true,        // fails if checked
     'checkbox2' => false,       // fails if unchecked
]);
?>
  • param $formSelector
  • param $params

dontSeeInSource

Проверяет, что текущая страница не содержит заданную строку в исходном коде.

<?php
$I->dontSeeInSource('<h1>Green eggs &amp; ham</h1>');
  • param $raw

dontSeeInTitle

Проверяет, что заголовок страницы не содержит указанную строку.

  • param $title

dontSeeLink

Проверяет, что на странице отсутствует ссылка с заданной строкой. Если второй параметр указан, проверяются только ссылки с соответствующим атрибутом «href».

<?php
$I->dontSeeLink('Logout'); // I suppose user is not logged in
$I->dontSeeLink('Checkout now', '/store/cart.php');
?>
  • param string $text
  • param string $url необязательный

dontSeeOptionIsSelected

Проверяет, что заданный параметр не выбран.

<?php
$I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
?>
  • param $selector
  • param $optionText

dontSeeRecord

Проверяет, что запись не существует в базе данных.

<?php
$I->dontSeeRecord('App\Models\Categories', ['name' => 'Testing']);
  • param string $model Имя модели
  • param array $attributes Атрибуты модели
  • [Part] orm

dontSeeResponseCodeIs

Проверяет, что код ответа равен указанному значению.

<?php
$I->dontSeeResponseCodeIs(200);

// recommended \Codeception\Util\HttpCode
$I->dontSeeResponseCodeIs(\Codeception\Util\HttpCode::OK);
  • param int $code

fillField

Заполняет поле ввода или текстовую область указанной строкой.

<?php
$I->fillField("//input[@type='text']", "Hello World!");
$I->fillField(['name' => 'email'], 'jon@example.com');
?>
  • param $поле
  • param $значение

следоватьПеренаправлению

Следовать ожидаемому перенаправлению, если оно есть.

<?php
$I->followRedirect();

получитьПриложения

Предоставляет доступ к объекту приложения Phalcon.

@see \Codeception\Lib\Connector\Phalcon::getApplication

  • return \Phalcon\Application|\Phalcon\Mvc\Micro

извлечьАтрибутИз

Извлекает значение заданного атрибута из заданного элемента. Ошибка, если элемент не найден.

<?php
$I->grabAttributeFrom('#tooltip', 'title');
?>
  • param $cssИлиXpath
  • param $атрибут

получитьКуки

Извлекает значение куки. Вы можете задать дополнительные параметры куки, такие как domain, path в массиве, переданном в качестве последнего аргумента. Если куки установлен запросом AJAX (XMLHttpRequest), может быть задержка со стороны браузера, поэтому попробуйте $I->wait(0.1).

  • param $куки

  • param array $параметры

извлечьИзТекущегоUrl

Применяет заданный регулярный выражение к текущему URI и возвращает первую группу захвата. Если параметры не указаны, возвращается весь URI.

<?php
$user_id = $I->grabFromCurrentUrl('~^/user/(\d+)/~');
$uri = $I->grabFromCurrentUrl();
?>
  • param string $uri необязательно

извлечьНесколько

Извлекает либо текстовое содержимое, либо значения атрибутов узлов, соответствующих $cssИлиXpath, и возвращает их в виде массива.

<a href="#first">First</a>
<a href="#second">Second</a>
<a href="#third">Third</a>
<?php
// would return ['First', 'Second', 'Third']
$aLinkText = $I->grabMultiple('a');

// would return ['#first', '#second', '#third']
$aLinks = $I->grabMultiple('a', 'href');
?>
  • param $cssИлиXpath
  • param $атрибут
  • return string[]

получитьИсходныйКодСтраницы

Извлекает исходный код текущей страницы.

@throws ModuleException если страница не была открыта.

  • return string Исходный код текущей страницы.

получитьЗапись

Извлекает запись из базы данных

<?php
$category = $I->grabRecord('App\Models\Categories', ['name' => 'Testing']);
  • param string $модель Имя модели
  • param array $атрибуты Атрибуты модели
  • [Part] orm

извлечьСервисИзКонтейнера

Ищет сервис на основе его конфигурации в контейнере DI Phalcon. Рекомендуется использовать для юнит-тестирования.

  • param string $сервис Имя сервиса
  • param array $параметры Параметры [Необязательно]
  • [Part] сервисы

получитьТекстИз

Находит и возвращает текстовое содержимое заданного элемента. Если используется размытый локатор, элемент ищется по CSS, XPath и путем сопоставления всего исходного кода страницы с регулярным выражением.

<?php
$heading = $I->grabTextFrom('h1');
$heading = $I->grabTextFrom('descendant-or-self::h1');
$value = $I->grabTextFrom('~<input value=(.*?)]~sgi'); // match with a regex
?>
  • param $cssИлиXpathИлиРегулярноеВыражение

получитьЗначениеИз

  • param $поле

  • return array|mixed|null|string

наличиеHttpЗаголовка

Устанавливает HTTP-заголовок в переданное значение, которое используется в последующих HTTP-запросах через PhpBrowser.

Пример:

<?php
$I->haveHttpHeader('X-Requested-With', 'Codeception');
$I->amOnPage('test-headers.php');

Для использования специальных символов в имени заголовка используйте сущности HTML: Пример: Заголовок с подчеркиванием - ‘Client_Id’ должен быть представлен как - ‘Client_Id’ или ‘Client_Id’

<?php
$I->haveHttpHeader('Client&#95;Id', 'Codeception');
  • param string $имя имя заголовка запроса
  • param string $значение значение, которому будет установлено для последующих запросов

наличиеВСессии

Устанавливает значение в сессию. Используется для авторизации.

  • param string $ключ
  • param mixed $значение

наличиеЗаписи

Вставляет запись в базу данных.

<?php
$user_id = $I->haveRecord('App\Models\Users', ['name' => 'Phalcon']);
$I->haveRecord('App\Models\Categories', ['name' => 'Testing']');
  • param string $модель Имя модели
  • param array $атрибуты Атрибуты модели
  • [Part] orm

наличиеПараметраСервера

Устанавливает параметр SERVER, действительный для всех последующих запросов.

$I->haveServerParameter('name', 'value');
  • param string $имя
  • param string $значение

создатьСнимокHtml

Используйте этот метод внутри интерактивной паузы, чтобы сохранить исходный код HTML текущей страницы.

<?php
$I->makeHtmlSnapshot('edit_page');
// saved to: tests/_output/debug/edit_page.html
$I->makeHtmlSnapshot();
// saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.html
  • param null $имя

назад

Перемещается назад в истории.

  • param int $количествоШагов (значение по умолчанию 1)

сброситьКуки

Удаляет куки с заданным именем. Вы можете задать дополнительные параметры куки, такие как domain, path в массиве, переданном в качестве последнего аргумента.

  • param $куки

  • param array $параметры

увидеть

Проверяет, содержит ли текущая страница заданную строку (без учета регистра).

Вы можете указать конкретный HTML-элемент (через CSS или XPath) в качестве второго параметра, чтобы искать только в этом элементе.

<?php
$I->see('Logout');                        // I can suppose user is logged in
$I->see('Sign Up', 'h1');                 // I can suppose it's a signup page
$I->see('Sign Up', '//body/h1');          // with XPath
$I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator

Обратите внимание, что поиск выполняется после удаления всех HTML-тегов из тела, поэтому $I->see('strong') вернет true для строк, таких как:

  • <p>I am Stronger than thou</p>
  • <script>document.createElement('strong');</script>

Но не будет true для строк, таких как:

  • <strong>Home</strong>
  • <div class="strong">Home</strong>
  • <!-- strong -->

Для проверки исходного кода используйте seeInSource().

  • param string $текст
  • param array|string $селектор необязательно

увидетьЧекбоксПроверенПроверяет, что указанный чекбокс выбран.
<?php
$I->seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms
$I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form.
$I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]');
?>
  • param $чекбокс

увидетьКуки

Проверяет, установлен ли куки с заданным именем. Вы можете задать дополнительные параметры куки, такие как domain, path, как массив, переданный в последнем аргументе.

<?php
$I->seeCookie('PHPSESSID');
?>
  • param $куки
  • param array $параметры

увидетьТекущийМаршрут

Проверяет, что текущий URL соответствует маршруту

<?php
$I->seeCurrentRouteIs('posts.index');
  • param string $имяМаршрута

увидетьТекущийUrlРавен

Проверяет, что текущий URL равен заданной строке. В отличие от seeInCurrentUrl, это соответствует только полному URL.

<?php
// to match root url
$I->seeCurrentUrlEquals('/');
?>
  • param string $uri

увидетьТекущийUrlСоответствует

Проверяет, что текущий URL соответствует заданному регулярному выражению.

<?php
// to match root url
$I->seeCurrentUrlMatches('~^/users/(\d+)~');
?>
  • param string $uri

увидетьЭлемент

Проверяет, существует ли заданный элемент на странице и виден. Вы также можете указать ожидаемые атрибуты этого элемента.

<?php
$I->seeElement('.error');
$I->seeElement('//form/input[1]');
$I->seeElement('input', ['name' => 'login']);
$I->seeElement('input', ['value' => '123456']);

// strict locator in first arg, attributes in second
$I->seeElement(['css' => 'form input'], ['name' => 'login']);
?>
  • param $селектор
  • param array $атрибуты

увидетьВТекущемUrl

Проверяет, содержит ли текущий URI заданную строку.

<?php
// to match: /home/dashboard
$I->seeInCurrentUrl('home');
// to match: /users/1
$I->seeInCurrentUrl('/users/');
?>
  • param string $uri

увидетьВПоле

Проверяет, что заданное поле ввода или текстовая область равны (то есть не просто содержат) заданному значению. Поля сопоставляются по текстовой метке, атрибуту «name», CSS или XPath.

<?php
$I->seeInField('Body','Type your comment here');
$I->seeInField('form textarea[name=body]','Type your comment here');
$I->seeInField('form input[type=hidden]','hidden_value');
$I->seeInField('#searchform input','Search');
$I->seeInField('//form/*[@name=search]','Search');
$I->seeInField(['name' => 'search'], 'Search');
?>
  • param $поле
  • param $значение

увидетьВПоляхФормы

Проверяет, установлены ли заданные параметры формы (имя => значение) на форме, соответствующей переданному селектору.

<?php
$I->seeInFormFields('form[name=myform]', [
     'input1' => 'value',
     'input2' => 'other value',
]);
?>

Для элементов с множественным выбором или для проверки значений нескольких элементов с одинаковым именем можно передать массив:

<?php
$I->seeInFormFields('.form-class', [
     'multiselect' => [
         'value1',
         'value2',
     ],
     'checkbox[]' => [
         'a checked value',
         'another checked value',
     ],
]);
?>

Кроме того, значения флажков можно проверять с помощью булевых значений.

<?php
$I->seeInFormFields('#form-id', [
     'checkbox1' => true,        // passes if checked
     'checkbox2' => false,       // passes if unchecked
]);
?>

Сочетайте это с submitForm для быстрого тестирования.

<?php
$form = [
     'field1' => 'value',
     'field2' => 'another value',
     'checkbox1' => true,
     // ...
];
$I->submitForm('//form[@id=my-form]', $form, 'submitButton');
// $I->amOnPage('/path/to/form-page') may be needed
$I->seeInFormFields('//form[@id=my-form]', $form);
?>
  • param $селекторФормы
  • param $параметры

увидетьВСессии

Проверяет, содержит ли сессия значение. Если значение равно null проверяет, что сессия имеет ключ.

<?php
$I->seeInSession('key');
$I->seeInSession('key', 'value');
  • param string $ключ
  • param mixed $значение

увидетьВИсходномКоде

Проверяет, содержит ли текущая страница заданную строку в исходном коде.

<?php
$I->seeInSource('<h1>Green eggs &amp; ham</h1>');
  • param $исходныйКод

увидетьВЗаголовке

Проверяет, содержит ли заголовок страницы заданную строку.

<?php
$I->seeInTitle('Blog - Post #1');
?>
  • param $заголовок

увидетьСсылка

Проверяет, есть ли ссылка с указанным текстом. Передайте полный URL в качестве второго параметра, чтобы сопоставить ссылки с этим точным URL.

<?php
$I->seeLink('Logout'); // matches <a href="#">Logout</a>
$I->seeLink('Logout','/logout'); // matches <a href="/logout">Logout</a>
?>
  • param string $текст
  • param string $url необязательно

увидетьКоличествоЭлементов

Проверяет, что на странице есть определенное количество элементов, соответствующих заданному локатору.

<?php
$I->seeNumberOfElements('tr', 10);
$I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements
?>
  • param $селектор
  • param mixed $ожидаемое int или int[]

увидетьКоличествоЗаписей

Проверяет, что в базе данных существует определенное количество записей.

<?php
$I->seeNumberOfRecords('App\Models\Categories', 3, ['name' => 'Testing']);
  • param string $модель Имя модели
  • param int $число int количество записей
  • param array $атрибуты Атрибуты модели
  • [Part] orm

увидетьВыбранныйВариант

Проверяет, выбран ли заданный вариант.

<?php
$I->seeOptionIsSelected('#form input[name=payment]', 'Visa');
?>
  • param $селектор
  • param $текстВарианта

увидетьСтраницуНеНайдена

Утверждает, что текущая страница имеет код ответа 404.

увидетьЗапись

Проверяет, существует ли запись в базе данных.

<?php
$I->seeRecord('App\Models\Categories', ['name' => 'Testing']);
  • param string $модель Имя модели
  • param array $атрибуты Атрибуты модели
  • [Part] orm

увидетьКодОтвета

Проверяет, что код ответа равен предоставленному значению.

<?php
$I->seeResponseCodeIs(200);

// recommended \Codeception\Util\HttpCode
$I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
  • param int $код

увидетьКодОтветаВДиапазоне

Проверяет, что код ответа находится в определенном диапазоне. Между фактически означает [от <= КОД <= до]

  • param int $от
  • param int $до

увидетьКодОтветаОшибкаКлиента

Проверяет, что код ответа — 4xx

увидетьКодОтветаПеренаправление

Проверяет, что код ответа — 3xx

увидетьКодОтветаОшибкаСервера

Проверяет, что код ответа — 5xx

увидетьУспешныйКодОтвета

Проверяет, что код ответа — 2xx

увидетьСессиюСоЗначениями

Утверждает, что сессия имеет заданный список значений.

<?php
$I->seeSessionHasValues(['key1', 'key2']);
$I->seeSessionHasValues(['key1' => 'value1', 'key2' => 'value2']);
  • param массив $bindings
  • return void

selectOption

Выбирает параметр в теге select или в группе радио-кнопок.

<?php
$I->selectOption('form select[name=account]', 'Premium');
$I->selectOption('form input[name=payment]', 'Monthly');
$I->selectOption('//form/select[@name=account]', 'Monthly');
?>

Для выбора нескольких параметров передайте массив во второй аргумент:

<?php
$I->selectOption('Which OS do you use?', array('Windows','Linux'));
?>

Или передайте ассоциативный массив во второй аргумент, чтобы указать, какой метод выбора следует использовать:

<?php
$I->selectOption('Which OS do you use?', array('text' => 'Windows')); // Only search by text 'Windows'
$I->selectOption('Which OS do you use?', array('value' => 'windows')); // Only search by value 'windows'
?>
  • param $select
  • param $option

sendAjaxGetRequest

Отправляет ajax GET-запрос с переданными параметрами. См. sendAjaxPostRequest()

  • param $uri
  • param $params

sendAjaxPostRequest

Отправляет ajax POST-запрос с переданными параметрами. Соответствующий HTTP-заголовок добавляется автоматически: X-Requested-With: XMLHttpRequest Пример:

<?php
$I->sendAjaxPostRequest('/add-task', ['task' => 'lorem ipsum']);

Некоторые фреймворки (например, Symfony) создают имена полей в форме «массива»: <input type="text" name="form[task]"> В этом случае вам нужно передавать поля следующим образом:

<?php
$I->sendAjaxPostRequest('/add-task', ['form' => [
    'task' => 'lorem ipsum',
    'category' => 'miscellaneous',
]]);
  • param string $uri
  • param array $params

sendAjaxRequest

Отправляет ajax-запрос, используя переданный HTTP-метод. См. sendAjaxPostRequest() Пример:

<?php
$I->sendAjaxRequest('PUT', '/posts/7', ['title' => 'new title']);
  • param $method
  • param $uri
  • param array $params

setCookie

Устанавливает cookie с заданным именем и значением. Вы можете установить дополнительные параметры cookie, такие как domain, path, expires, secure в массиве, переданном в качестве последнего аргумента.

<?php
$I->setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3');
?>
  • param $name
  • param $val
  • param array $params

setMaxRedirects

Устанавливает максимальное количество редиректов, за которыми может следовать Client.

<?php
$I->setMaxRedirects(2);
  • param int $maxRedirects

setServerParameters

Устанавливает параметры SERVER, действительные для всех последующих запросов. Это удалит старые.

$I->setServerParameters([]);

startFollowingRedirects

Включает автоматическое следование редиректам клиентом.

<?php
$I->startFollowingRedirects();

stopFollowingRedirects

Запрещает автоматическое следование редиректам клиентом.

<?php
$I->stopFollowingRedirects();

submitForm

Отправляет заданную форму на странице со значениями формы. Передайте значения поля формы в качестве массива во втором параметре.

Хотя эта функция может использоваться в качестве сокращенной версии fillField(), selectOption(), click() и т.д., она имеет некоторые важные отличия:

  • Можно использовать только имена полей, а не CSS/XPath-селекторы или метки полей
  • Если поле, переданное в эту функцию, не существует на странице, оно будет молча добавлено к HTTP-запросу. Это полезно для тестирования некоторых типов форм, но имейте в виду, что вы не получите исключение, как если бы вы вызвали fillField() или selectOption() с отсутствующим полем.

Поля, которые не предоставлены, будут заполнены их значениями со страницы или из предыдущих вызовов fillField(), selectOption() и т.д. Вам не нужно нажимать кнопку «Отправить» после этого. Эта команда сама инициирует запрос к действию формы.

Вы можете необязательно указать значение кнопки, которое нужно включить в запрос, с последним параметром (в качестве альтернативы явному установлению его значения во втором параметре), так как значения кнопок не включаются в запрос иначе.

Примеры:

<?php
$I->submitForm('#login', [
    'login' => 'davert',
    'password' => '123456'
]);
// or
$I->submitForm('#login', [
    'login' => 'davert',
    'password' => '123456'
], 'submitButtonName');

Например, представьте форму «Регистрация»:

<form id="userForm">
    Login:
    <input type="text" name="user[login]" /><br/>
    Password:
    <input type="password" name="user[password]" /><br/>
    Do you agree to our terms?
    <input type="checkbox" name="user[agree]" /><br/>
    Subscribe to our newsletter?
    <input type="checkbox" name="user[newsletter]" value="1" checked="checked" /><br/>
    Select pricing plan:
    <select name="plan">
        <option value="1">Free</option>
        <option value="2" selected="selected">Paid</option>
    </select>
    <input type="submit" name="submitButton" value="Submit" />
</form>

Вы могли бы написать следующее, чтобы отправить её:

<?php
$I->submitForm(
    '#userForm',
    [
        'user' => [
            'login' => 'Davert',
            'password' => '123456',
            'agree' => true
        ]
    ],
    'submitButton'
);

Обратите внимание, что «2» будет отправленным значением для поля «plan», так как это выбранный параметр.

Чтобы сбросить предварительно установленную галочку «рассылка», вызовите $I->uncheckOption(['name' => 'user[newsletter]']); перед отправкой формы, как показано здесь (т. е. без поля «newsletter» в $params массиве).

Вы также можете эмулировать отправку JavaScript, не указывая какие-либо кнопки в третьем параметре submitForm.

<?php
$I->submitForm(
    '#userForm',
    [
        'user' => [
            'login' => 'Davert',
            'password' => '123456',
            'agree' => true
        ]
    ]
);

Эта функция хорошо работает в паре с seeInFormFields() для быстрого тестирования интерфейсов CRUD и логики валидации форм.

<?php
$form = [
     'field1' => 'value',
     'field2' => 'another value',
     'checkbox1' => true,
     // ...
];
$I->submitForm('#my-form', $form, 'submitButton');
// $I->amOnPage('/path/to/form-page') may be needed
$I->seeInFormFields('#my-form', $form);

Значения параметров могут быть установлены в массивы для нескольких входных полей с одинаковым именем или многовыборных раскрывающихся списков. Для флажков вы можете использовать либо строковое значение, либо логическое true/false, которые будут заменены значением флажка в DOM.

<?php
$I->submitForm('#my-form', [
     'field1' => 'value',
     'checkbox' => [
         'value of first checkbox',
         'value of second checkbox',
     ],
     'otherCheckboxes' => [
         true,
         false,
         false
     ],
     'multiselect' => [
         'first option value',
         'second option value'
     ]
]);

Смешивание строковых и логических значений для значения флажка не поддерживается и может привести к неожиданным результатам.

Имена полей, заканчивающиеся на [], должны передаваться без символов квадратных скобок, и их значение должно содержать массив. Это позволяет отправлять несколько значений с одинаковым именем, рассмотрите:

<?php
// This will NOT work correctly
$I->submitForm('#my-form', [
    'field[]' => 'value',
    'field[]' => 'another value',  // 'field[]' is already a defined key
]);

Решение состоит в передаче значения массива:

<?php
// This way both values are submitted
$I->submitForm('#my-form', [
    'field' => [
        'value',
        'another value',
    ]
]);
  • param $selector
  • param $params
  • param $button

switchToIframe

Переключение на iframe или фрейм на странице.

Пример:

<iframe name="another_frame" src="http://example.com">
<?php
# switch to iframe
$I->switchToIframe("another_frame");
  • param string $name

uncheckOption

Снимает отметку с флажка.

<?php
$I->uncheckOption('#notify');
?>
  • param $option

© 2011 Michael Bodnarchuk and contributors
Licensed under the MIT License.
https://codeception.com/docs/modules/Phalcon4

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API