Лаб 5_RubyOnRails (1075652), страница 5
Текст из файла (страница 5)
Поэтому необходимо наполнить его соотествующимидействиями. Файл находится в директории test/controllers и называетсяcalc_controller. После автоматической генерации он выглядит следующимобразом:require 'test_helper'class CalcControllerTest < ActionController::TestCasetest "should get input" doget :inputassert_response :successendtest "should get view" doget :viewassert_response :successendendКак видим, тест уже содержит проверку факта корректного выполнениядействий контроллера, которые были указаны при его генерации, по запросутипа get (в данном случае get-запрос лишь эмулируется).
Для действия :inputпроверку результата :success можно считать корректной, поскольку задачейпроверки состава сформированной формы данный тест не проводит.Тестирование действия :view в данном случае неполноценно, поскольку нивходные данных, ни наличие соответствующих сформированных объектов непроверяется. Добавим два дополнительных теста, проверяющих конкретныерезультаты выполнения действий:30 тест со значениями параметров v1=1, v2=10, op= '+', то есть выполнитьоперацию сложения 1+10 и проверить результат 11. тест на получение результата 'Unknown!', если входные данные некорректны.Имена тестов задаются в виде строки, причём эта строка должна отражатьреально выполняемые действия. Приведём код с дополнительными тестами.require 'test_helper'class CalcControllerTest < ActionController::TestCasetest "should get input" doget :inputassert_response :successendtest "should get view" doget :viewassert_response :successendtest "should get 11 for view with with 1+10" doget :view, {v1: 1, v2: 10, op: '+'}assert_equal assigns[:result], 11endtest "should get Unknown! for view with incorrect params" doget :viewassert_equal assigns[:result], 'Unknown!'endendВ строке get :view, {v1: 1, v2: 10, op: '+'} производится вызов метода get,которому передаётся имя метода-действиия контроллера view, причём указаныв форме хэша значения параметров.
Результат проверяется в утверждении наравенство assert_equal, причём доступ к созданным внутри действияпеременным уровня экземпляра осуществляется с помощью хэша assigns. Впервом случае переменная @result (в коде теста обращение осуществляется поимени через хэш assigns) имеет значение 11, во втором должна содержатьстроки 'Unknown!'.Запуск тестов осуществляется в корневой директории приложения при помощикоманды rake test при не запущенном веб-сервере. Если тесты выполненыкорректно, будет получено сообщение о 4 выполненных тестах, 4-хутверждениях и 0 ошибок. Иначе будет получено сообщение об ошибке вконкретном тесте.31Контрольные вопросы1.
Назовите основные принципы модели Model-View-Controller.2. Приведите основные команды rails.3. Назовите несколько методов для формирования HTML-элементов внутришаблонов rails.4. Приведите примеры встроенных тестов Rails и их основное назначение.32Задание на лабораторную работу Сгенерировать каркас Rails-приложения в директории, полный путь ккоторой содержит только символы кодировки ASCII-7bit. При помощи команды “rails generate controller” сформироватьконтроллер для реализации логики приложения и двух действий — вводданных, просмотр результата. Дописать код сформированного контролера для расчета заданной взадании функции.
Рекомендуется предварительно разработать и отладитьпрограмму вычисления функции вне Rails-приложения и размещать вконтроллер уже отлаженный код. Написать в файле представления (.erb) код для формирование формыввода данных, необходимых при расчёте, а также код дляформатирования результатов расчёта в виде таблицы. Отладить и проверить работу приложения. Заменить обращение по корневому адресу на обращение к действиямсозданного контроллера. Реализовать функциональный тест разработанного контроллераприложения на базе каркаса, сформированного при его создании.Проверить выполнение теста.Отчет должен содержать: исходные коды контроллера, представлений и функционального теста суказанием имени файла; изображения страниц с формой ввода значений и вывода результатоввычислений; результат выполнения функционального теста.33Литература1.
Гибкая разработка веб-приложений в среде Rails. 4-е издание Сэм Руби,Дэйв Томас, Дэвид Хэнссон. Серия: Для профессионалов.- Питер: 2013.464 стр.2. http://russian.railstutorial.org/chapters/beginning3. http://russian.railstutorial.org/4. http://v32.rusrails.ru/a-guide-to-testing-rails-applications/functional-tests-foryour-controllers5. Sam Ruby, Dave Thomas, David Heinemeier Hansson.
Agile WebDevelopment with Rails. Third Edition. The Pragmatic Bookshelf. Raleigh,North Carolina Dallas, Texas. 20096. Obie Fernandez. The rails 3 way. 4-th edition. Addison-Wesley. 20107. http://guides.rubyonrails.org/testing.html34.