Это один из случаев, когда вам не следует слишком зацикливаться на именах. Rails относится к тестам, в которых модели ActiveRecord используются как «модульные» тесты, в основном потому, что они являются тестами самого низкого уровня, непосредственно поддерживаемыми платформой. Согласно результатам тестирования, к которому, как я признаю, я склонен относиться довольно последовательно, модульные тесты не должны иметь зависимостей, внешних по отношению к тестируемому модулю; это означает такие вещи, как механизмы персистентности, то есть база данных.
Тем не менее, тестирование моделей ActiveRecord любой сложности без базы данных быстро заставит вас пожирать руки. Rails предполагает, что вы используете базу данных для тестов; это просто способ, которым написана структура. Вы можете попытаться заглушить все, но в конечном итоге потерпите неудачу, так как в конечном итоге вы будете возиться с внутренностями ассоциаций ActiveRecord (не для слабонервных). Вы можете попытаться извлечь весь код, не связанный с постоянством, в отдельные модули, которые тестируют без базы данных, но вы будете создавать довольно много ненужных сложностей.
Не пытайтесь бороться с рамками. ActiveRecord и ActionController имеют очень специфические шаблоны ожидаемого использования, как в производстве, так и в тестах. В конце концов, Rails - это все о конвенциях. Если вы будете следовать шаблону использования, вы будете выполнять гораздо меньше работы и будете гораздо меньше разочарованы, чем если вы будете бороться с соглашениями, чтобы придерживаться идеалов модульного тестирования. Если вам от этого легче, считайте, что ваши тесты ActiveRecord являются «модельными» тестами, а ваши функциональные тесты - «контролерными» тестами (это терминология, которая используется rspec, между прочим).
Все это говорит о том, что вы не должны обращаться к базе данных без необходимости в ваших модельных тестах (или спецификациях). Некоторые проверки, такие как уникальность, требуют базы данных, но большинство - нет. Многие действия, связанные с созданием / сохранением обратных вызовов и ассоциаций, требуют базы данных, а другие - нет. Знайте, какие действия вы вызываете.