gpt4 book ai didi

ruby-on-rails - factory_girl 记录在哪里?

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:21 26 4
gpt4 key购买 nike

我正在尝试通过 WatirRSpec 执行集成测试。因此,我在/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 东西,只是为了发现用户 实际上在 DB 中。好的,但由于用户仍然无法登录,我决定亲眼看看他是否出现在数据库中。

我在工厂调用后立即添加了一个sleep,然后去看看此刻数据库中有什么。看到用户实际上在那里不见了,我很伤心!怎么来的?尽管如此,当我试图在代码中输出一个用户时,他实际上是从某个地方获取的。 那么 factory_girl 在运行时创建的记录在哪里?test 还是 dev DB?我不明白。

我已经检查了 10 次我是否在 test 模式下运行我的 Mongrel(这重要吗?我认为重要,因为我正在尝试调整集成测试),如果我的database.yml 保存正确的连接特定数据。

我正在使用 authlogic,如果它能提供任何线索(不,放置 activate_authlogic 在这里不起作用)。

最佳答案

不要忘记 RSpec 在运行规范时可能正在使用转换。 RSpec 会将规范的执行包装在一个事务中,并在最后回滚。这意味着您将无法从该事务外部(即从另一个 SQL 连接)查看记录。

如果你想确保用户记录确实是由 Factory Girl 创建的,你可以这样做:

before(:each)
@user = Factory(:user)
User.find_by_username(@user.username).should_not be_nil
@browser = FireWatir::Firefox.new
end

关于ruby-on-rails - factory_girl 记录在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com