我正在尝试通过 Watir 和 RSpec 进行集成测试。因此,我在 /integration 中创建了一个测试文件,并编写了一个测试,该测试使用 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
...
当我开始测试并在浏览器中看到“性能”时,它总是会引发“用户名无效”的错误。
我进行了调查,并进行了一个小技巧。首先,我开始怀疑工厂是否实际上在数据库中创建用户。因此,在立即调用工厂后,我放置了一些
puts User.find
的东西,只是发现用户实际上已经在数据库中了。好的,但是因为用户仍然无法登录,所以我决定亲眼看看他是否存在于数据库中。我在工厂调用之后添加了一个
sleep
,然后去看看此时数据库中有什么。我很失望地发现用户实际上确实缺失了!怎么回事?但是,当我尝试从代码中输出用户时,他实际上被从某个地方获取到了。那么由factory_girl在运行时创建的记录位于何处?是test
还是dev
数据库?我不明白。我已经检查了10次,确保我正在以
test
模式运行Mongrel(这重要吗?我认为它很重要,因为我正在尝试运行集成测试),并且我的database.yml
包含正确的连接特定数据。如果可以提供任何线索,我正在使用authlogic(不,这里放置
activate_authlogic
不起作用)。
User
正在被建立并应用于数据库。 - oldhomemovie