Ладно, ребята!
Вот мой ответ!
DELIMITER_VAL='='
read -d '' F_ABOUT_DISTRO_R <<"EOF"
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
NAME="Ubuntu"
VERSION="14.04.4 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.4 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
EOF
SPLIT_NOW=$(awk -F$DELIMITER_VAL '{for(i=1;i<=NF;i++){printf "%s\n", $i}}' <<<"${F_ABOUT_DISTRO_R}")
while read -r line; do
SPLIT+=("$line")
done <<< "$SPLIT_NOW"
for i in "${SPLIT[@]}"; do
echo "$i"
done
Почему этот подход «лучший» для меня?
По двум причинам:
[] 's
Я думаю, что Webrat - это больше, чем вам нужно. Для тестирования XML-канала вам не нужен симулятор браузера, такой как Webrat, который загружал бы страницы и анализировал всю разметку (ссылки, формы и т. Д.), Когда у вас действительно нет HTML-страниц.
Вам скорее понадобится что-то вроде Curl ( http://curl.haxx.se ) или Curb (на rubyforge, которые являются привязками Ruby для Curl) или Patron (на rubyforge).
Эти библиотеки могут создавать заголовки запроса как по своему вкусу (например, установка Content-Type, выбор между GET PUT POST DELETE HEAD и т. д.) и получение ответа и, вероятно, выполнение перенаправления 302, когда это необходимо.
Возвращенный ответ может быть затем преобразован в объект XML, и XML парсеры, доступные для Ruby, можно использовать для проверки вывода. Кроме того, вы можете написать классы XMLMapping (на rubyforge) для преобразования вывода XML в объекты Ruby и тестирования их атрибутов и т. Д. Это намного чище, IMHO.
После настройки маршрутов RESTful вы сможете использовать Webrat для посещения различных маршрутов. Затем вы можете проверить, что каждый маршрут возвращает XML, который соответствует вашим ожиданиям.
Вот сообщение в блоге, в котором описывается, как тестировать выходные данные XML в RSpec: Тестирование вывода XML
Webrat - это безголовый браузер, что просто означает, что вы можете имитировать браузер, не открывая настоящий браузер, такой как FireFox, на вашей машине разработки. Это означает, что вы можете просто ввести что-то вроде «visit 'users /'» в определенных шагах и смоделировать пользователя, обращающегося к вашему приложению.
Наконец, Прагматическая книга по RSpec (все еще находится в стадии бета-тестирования). отличный ресурс о том, как использовать Cucumber, Webrat и RSpec вместе и управлять разработкой приложений с помощью BDD.
Функция visit
webrat принимает http_method в качестве второго параметра. Вы также можете протестировать свой API, как в следующем правиле огурца:
When /^I restfully delete (?:|the )user "([^\"]*)"$/ do |login|
visit(path_to("user \"#{login}\" page"), :delete)
end