Источник:
ror2ru.elementalcms.org
Unit и functional тестирование в rails.
всё что относится к тестам находится в папке /test
Unit тестирование - тестирование моделей в Rails.
Цель - проверить корректную работу моделей - создание, изменение, удаление,
бизнес логику и т.д.
* для созданных через генератор моделей, автоматически создается одноименный
таблице файл в папке test/fixtures, например users.yml, и заготовка файла
тестирование в папке test/unit - user_test.rb
* запуск конкретного unit теста -
<!-- CODE -->
ruby user_test.rb,
<!-- /CODE -->
либо из корня приложения:
<!-- CODE -->
ruby test/unit/user_test.rb
<!-- /CODE -->
* запуск всех тестов (юнит/функциональных), в корне приложения:
<!-- CODE -->
rake
<!-- /CODE -->
* содержимое папки fixtures - соотв. таблицам, и заполняется автоматически при
запуске каждого теста в рамках TestCase.
* содержимое fixtures это yaml формат
* в fixtures можно вставлять ruby код (<%= %>), удобно для формирования
актуальных для тестов дат, например <%= 1.day.from_now.strftime("m-H:S") %>
* для тестирования необходима отдельная БД, appname_test, конфигурация в config/database.yml
* при запуске тестов структура production версии БД копируется в тестовую БД.
* метод fixtures для теста, загружает в атрибут класса значение соотв. файла,
например
<!-- CODE -->
class
UserTest
<
Test::Unit::TestCase
fixtures :users
<!-- /CODE -->
становится доступным переменная @users, которая содержит users.yml файл.
если содержимое файла users.yml
<!-- CODE -->
ivanov:
id:
1
name:
ivanov
petrov:
id:
2
name:
petrov
<!-- /CODE -->
то в @users можно получить доступ @users['ivanov']
также появляются - @ivanov, @petrov и соотв. доступны @ivanov['name'] (или же
@ivanov.name ) отключается с помощью:
<!-- CODE -->
self.use_instantiated_fixtures
=
false
<!-- /CODE -->
в test_helper.rb
* test_helper.rb - отправная точка для всех тестов - делает добавления в
Test::Unit::TestCase базовый класс.
можно добавить свои проверки, например assert_salable(product), и использовать
уже его в тестах. внутри своего теста, использовать функцию "assert", первый
параметр - булевое, второе - сообщение, в случае отрицательного результата.
<!-- CODE -->
assert(
boolean,
message
)
<!-- /CODE -->
Functional тестирование - тестирование контроллеров в Rails.
todo
Последние комментарии