Согласно документации factory_girl_rails: вот разница между factory_girl build()
и create()
методы:
# Возвращает экземпляр пользователя, который не сохранен
пользователь = сборка (: пользователь)
# Возвращает сохраненный экземпляр пользователя
пользователь = создать (: пользователь)
Я знаю, что сила фабрик в том, что они делают ваш набор тестов быстрым, потому что он позволяет запускать тесты, вообще не касаясь базы данных с помощью метода build()
. С другой стороны, метод create()
все еще касается базы данных, потому что он сохраняет запись в базе данных.
Я сбит с толку, потому что, когда я устанавливаю точку останова в своем тесте после использования create()
- Консоль rails сообщает, что объект сохраняется в базе данных (как и ожидалось)
test/test.log
показывает, что объект был сохранен в базе данных (как и ожидалось)Но когда я смотрю на таблицу в тестовой базе данных: ее нет (не ожидалось. Я ожидал увидеть объект в базе данных)
#someApp/spec/models/user_spec.rb RSpec.describe User, type: :model do it "checks the age on the basic 'User' Factory " do user = create(:user) # should create a user and persist it to the database binding.pry expect(user.age).to eq(28) end end
Выполнение останавливается в точке останова, и консоль рельсов открывается. Я проверяю настойчивость, и она возвращает истину:
user.persisted?
=> true
Тем не менее, я просматриваю таблицу в своей тестовой базе данных, обновляю таблицу, но по-прежнему никакая запись не отображается:
Что мне не хватает? Я думал, что когда вы используете create()
, запись будет сохранена в базе данных. Неужели вообще не сохраняется в базе данных?