2010-08-12 4 views
0
  1. У меня есть несколько сложных объектов для заглушки (экземпляры камней, которые я использую). Где я могу централизовать эти заглушки, чтобы сделать их доступными для всех тестов?Некоторые вопросы модульного тестирования Rails (с использованием Shoulda + Factory girl)

  2. Как я могу программно очистить БД между тестами без грабли: тест? Я хочу быстро запустить отдельные тесты с помощью textmate, но при этом произойдет ошибка, так как он не очищает БД между тестами

  3. Тестирование выполняется медленно, так как оно должно развернуть экземпляр Rails. Как ускорить тесты? Особенно во время написания тестов и хочет, чтобы быстро запустить изменения

+0

другой вариант вместо запуска тестов через Textmate - использовать автотест; http://ph7spot.com/musings/getting-started-with-autotest – house9

ответ

2

1) Вы можете поместить их в test_helper.rb, чтобы сделать их доступными для всех тестов или вы можете написать свой собственный модуль, который содержит эти методы, а затем включить этот модуль в тестах, требующих этих заглушек.

2) Вы можете поместить Model.destroy_all (или .delete_all если это уместно, которое было бы быстрее) в методе настройки теста вырезать те модели, которые вас больше не интересует.

Однако, если вы работаете тесты в транзакции (и ваша база данных поддерживает транзакции), тогда вам не нужно будет удалять какие-либо данные, потому что создание данных и теста будет выполняться в транзакции, которая затем будет откатываться, автоматически очищая данные.

3) Не уверен в этом. У меня была эта проблема, которая много развивалась в Windows, но не так много на * nix. Вы могли бы изучить какое-то непрерывное тестирование, но по-прежнему будет задержка в отношении обратной связи. Возможно, стоит исследовать то, что заставляет среду рельсов быть настолько медленной, что это может быть что-то, что вы можете пропустить в своей тестовой среде.

Смежные вопросы