1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-wsunit

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
ReadMe.md

PHPUnit WebServices Extension

Возможность регистрировать тестовых слушателей в PHPUnit делает его чрезвычайно простым для выполнения действий при определённом состоянии тестового раннера (например, когда тест запущен). WSUnit активно использует эту возможность и слушает некоторые из излучаемых сигналов.

Статус Travis: Build Status

Цель WSUnit поднимает модульные тесты до функциональных тестов путём настройки. После настройки тестовый слушатель отправляет запрос в указанное место, записывает тело и заголовок ответа и сохраняет их в файловой системе. Затем сам тест, например, проверяет правильность ответа. Идея заключалась в том, чтобы не быть вынужденным писать API-тесты более одного раза и увеличить повторное использование уже написанных проверок.

Установка Не так много нужно для установки, кроме как загрузить исходные коды, настроить тестового слушателя в phpunit.xml.dist и создать файл конфигурации, чтобы сообщить слушателю, какой тест должен вызывать какой URL для получения ответа. Если вы используете composer, вам просто нужно определить зависимость от WSUnit в вашей конфигурации и настроить WSUnit согласно следующему описанию.

Composer

{
    "require-dev": {
        "lapistano/wsunit": " 2.*"
    }
}

Эта конфигурация composer проверит источники, помеченные как второй выпуск. В случае, если вы хотите получить «самую свежую» версию, замените «2.*» на «dev-master». Но имейте в виду, что это иногда может привести к ошибкам.

Примечание: если вы не знаете, что это значит, веб-сайт проекта composer — хорошее место для начала.

Github Таким образом, я рекомендую использовать способ composer, чтобы сделать прокси-объект зависимостью вашего проекта. Исходные коды также доступны через github. Просто клонируйте его, как вы, возможно, привыкли.

$ git clone git://github.com/lapistano/wsunit.git
$ mkdir -p wsunit/vendor/lapistano
$ cd wsunit/vendor/lapistano
$ git clone git://github.com/lapistano/proxy-object.git

Конфигурация Конфигурация состоит из двух частей. Одна — это регистрация фактического тестового слушателя в PHPUnit, вторая — определение того, какой тест (идентифицированный по его имени) должен запрашивать ответ от какого местоположения.

PHPUnit Для конфигурации PHPUnit посетите http://www.phpunit.de/manual/current/en/appendixes.configuration.html и прочитайте раздел «Test Listener» или скопируйте пример в свою конфигурацию и просто адаптируйте местоположение вашего файла конфигурации.

<listeners>
  <listener class="\lapistano\wsunit\WebServiceListener">
    <arguments>
        <object class="\lapistano\wsunit\ExtensionsWebserviceListenerFactory"/>
        <object class="\lapistano\wsunit\Loader\LoaderConfiguration"/>
        <array>
          <element key="httpClient">
            <string>lapistano\wsunit\Http\HttpClient</string>
          </element>
          <element key="logger">
            <string>lapitano\wsunit\Logger\LoggerFilesystem</string>
          </element>
          <element key="configuration">
            <string>/path/to/configuration.xml</string>
          </element>
        </array>
      </arguments>
    </listener>
  </listeners>

Аргументы

(object) Extensions_Webservice_Listener_Factory — класс фабрики, предоставляющий объекты, необходимые для работы слушателя. (object) Extensions_Webservice_Listener_Loader_Configuration — объект для загрузки файла конфигурации. (array) содержит имена классов, которые должны быть зарегистрированы на фабрике, и местоположение файла определения местоположения.

Настройка тестового слушателя Помимо информирования PHPUnit о тестовом слушателе и фактического выполнения каждого... Тест учитывает местоположение, из которого будет получен ответ. Требуется второй файл конфигурации. Следующий пример показывает такую конфигурацию.

Примечание: Имя и расположение файла конфигурации задаются в элементе element[key='configuration'] регистрации прослушивателя теста в PHPUnit.

Предупреждение: Помните, что если вы решите использовать пространства имён, они также должны быть использованы в файле конфигурации PHPUnit для идентификации используемых классов. В случае, если вы что-то сделаете неправильно, PHPUnit просто проигнорирует ваш прослушиватель без каких-либо предупреждений или ошибок. Не спрашивайте меня, откуда я это знаю. Это поведение исправлено в PHPUnit 3.7.

<?xml version="1.0" encoding="UTF-8"?>
<listener>
    <serializer>\lapistano\wsunit\Serializer\Http\Extensions_Webservice_Serializer_Http_Response</serializer>
    <test case="Example_TestCase" name="testGetData">
        <location href="http://example.org/data.txt" />
    </test>
    <test case="\lapistano\wsunit\Extensions_Webservice_Constraint_JsonErrorMessageProviderTest"
          name='testTranslateTypeToPrefix with data set "expected"'
    >
        <serializer>\lapistano\wsunit\Serializer\Http\Extensions_Webservice_Serializer_Http_Response</serializer>
        <location dataName="expected" href="http://blog.bastian-feder.de/blog.rss">
            <query>
                <param name="mascott[]">tux</param>
                <param name="mascot[RedHat]">beastie</param>
                <param name="os">Linux</param>
            </query>
        </location>
    </test>
</listener>

### Доступные теги

- **test**
Каждый тест, который должен быть распознан, представлен тегом «test» и заключён в корневой тег «listener». Тест распознаётся по атрибуту «case» теста и имени (атрибут «name») теста. Если ваш тест регистрирует поставщика данных, имейте в виду, что имя теста будет изменено PHPUnit (см. второй раздел теста в примере).

- **serializer**
Этот тег можно определить в теге <listener>, чтобы использовать сериализацию в целом, или в конфигурации <test>, чтобы переопределить глобально установленный сериализатор.

- **location**
Определяется в разделе теста, он определяет местоположение и его необязательную строку запроса. Как только эта информация будет установлена, настроенное местоположение будет использоваться для получения ответа.

Зависимости
============
- [PHPUnit](http://github.com/sebastianbergmann/phpunit)

Дополнительно
--------
- [proxy-object](http://github.com/lapistano/proxy-object), если вы хотите запустить набор тестов. Его необходимо поместить в каталог vendor, расположенный в корне проекта. Вы можете либо клонировать его с github, либо использовать composer для его получения.

Что предстоит сделать
==========
Пока что ws unit далёк от завершения. Следующий список даст вам представление о том, чего ожидать дальше:

- Добавить имя тестового случая к имени сохранённого файла фикстуры, чтобы обеспечить уникальность.
- Реализовать общий (запасной) сериализатор, чтобы иметь возможность сохранять любой ответ.
- Обеспечить возможность использования wsunit с Symfony2 (это уже может быть нормально, но ещё не проверено).
- Открыть новый репозиторий для сериализаторов, загрузчиков и регистраторов, чтобы быть максимально совместимым.
- Предоставить больше реализаций сериализатора, загрузчика и регистратора (например, для загрузки конфигурации из файлов yml).

Если у вас есть другие варианты использования, идеи или требования, не стесняйтесь разветвляться и вносить свой вклад. Мы будем рады ;)

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-wsunit.git
git@api.gitlife.ru:oschina-mirror/mirrors-wsunit.git
oschina-mirror
mirrors-wsunit
mirrors-wsunit
master