Я пытаюсь выполнить интеграционный тест с помощью Watir и RSpec . Итак, я создал тестовый файл в / интеграции и написал тест, который добавляет тестового пользователя в базу через factory_girl .
Проблема в том, что я не могу войти в систему с моим тестовым пользователем. Тест, который я написал, выглядит следующим образом:
...
before(:each)
@user = Factory(:user)
@browser = FireWatir::Firefox.new
end
it "should login"
@browser.text_field(:id, "username").set(@user.username)
@browser.text_field(:id, "password").set(@user.password)
@browser.button(:id, "get_in").click
end
...
Когда я запускаю тест и вижу «производительность» в браузере, он всегда вызывает ошибку Username is not valid
.
Я начал расследование и сделал небольшой трюк. Прежде всего, я начал сомневаться, действительно ли фабрика создает пользователя в БД. Таким образом, после немедленного вызова фабрики я поместил некоторые вещи puts User.find
только для того, чтобы обнаружить, что пользователь на самом деле в БД. Хорошо, но поскольку пользователь все еще не мог войти, я решил посмотреть, присутствует ли он в БД моими собственными глазами.
Я добавил sleep
сразу после заводского вызова и пошел посмотреть, что в БД в данный момент. Я был сокрушен, чтобы видеть, что пользователь фактически отсутствует там! Как так? Тем не менее, когда я пытаюсь вывести пользователя в коде, его фактически откуда-то извлекают. Так, где лежат записи, сделанные factory_girl во время выполнения? Это test
или dev
DB? Я не понимаю.
Я 10 раз проверял, запускаю ли я свой Mongrel в режиме test
(имеет ли это значение? Думаю, так и есть, как я пытаюсь настроить интеграционный тест), и если мой database.yml
содержит правильные данные для подключения.
Я использую authlogic , если это может дать какую-либо подсказку (нет, установка activate_authlogic
здесь не работает).