我正在尝试通过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
...
当我开始测试并在浏览器中看到“性能”时,它总是会引发Username is not valid
错误。
我已经开始调查,并做了一个小技巧。首先,我开始怀疑工厂是否真的在数据库中创建了用户。因此,在立即致电工厂后,我放了一些puts User.find
东西才发现用户实际上在数据库中。好的,但是由于用户仍然无法登录,我决定亲眼看看他是否存在于数据库中。
我在sleep
工厂电话后添加了一个权利,然后去查看数据库中的内容。我很震惊地看到用户实际上在那里失踪了!怎么会?尽管如此,当我试图在代码中输出一个用户时,他实际上是从某个地方获取的。那么 factory_girl 在运行时中制作的记录在哪里呢?是数据库test
还是dev
数据库?我不明白。
我已经检查了 10 次是否在test
模式下运行 Mongrel(这有关系吗?我认为确实如此,因为我正在尝试调整集成测试)以及我是否database.yml
拥有正确的连接特定数据。
我正在使用authlogic,如果这可以提供任何线索(不,putactivate_authlogic
在这里不起作用)。