我试图通过的Watir和RSpec的进行集成测试。所以,我在/集成中创建了一个测试文件,并编写了一个测试,它通过factory_girl将测试用户添加到基础中。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
错误。
我已经开始调查,并做了一个小把戏。首先,我开始怀疑工厂是否真的在DB中创建用户。所以在立即打电话给工厂之后,我放了一些puts User.find
的东西,只发现用户实际上在DB中是。好吧,但由于用户仍然无法登录,我决定用自己的眼睛看看他是否在DB中。
我厂调用后添加一个sleep
权,并去看望在DB的时刻是什么。我被粉碎,看到用户实际上在那里失踪!怎么来的?不过,当我试图在代码中输出用户时,他实际上是从某个地方获取的。 那么factory_girl在运行时所做的记录在哪里呢?是test
还是dev
DB?我不明白。
,如果我跑我的杂种狗在test
模式我检查了10倍(这很重要呢?我想是这样,因为我想囤集成测试),如果我database.yml
持有特定的正确连接数据。
我正在使用authlogic,如果可以给出任何线索(不,activate_authlogic
不会在这里工作)。
你的用户由工厂女生生成被激活或类似的东西? – shingara 2010-03-25 21:07:09
@shingara在我调用Factory的那一刻,构造函数'User'正在构建并应用于db。 – gmile 2010-03-25 21:19:34
是的,但在您的控制器连接期间,它可以通过电子邮件通过示例检查您是否激活它。 – shingara 2010-03-25 21:57:32