工厂女孩& Rails:我们可以关闭包装每个测试的数据库事务吗?

发布于 2024-11-16 23:18:11 字数 245 浏览 1 评论 0原文

当我测试应用程序中的一些线程功能时,我遇到了数据库锁定的问题 - 数据库锁定在一个线程上,然后所有其他线程都死锁。由于我的代码中没有显式事务,我不能只是手动保护和释放。

我在某处读到,TestCase 中的固定装置利用隐式(隐式到我的代码)事务来清理测试之间的数据库,但我找不到任何地方是否这对于 Factory Girl 来说也是如此。

有谁知道这是否属实,如果是,有没有办法针对特定测试(而不是所有测试)关闭它?

提前致谢!

I've got this issue with database locking when I'm testing some threading features I've got in my application--the database locks on one thread and then all the other threads deadlock on that. As there's no explicit transaction in my code I can't just guard and release manually.

I read somewhere that fixtures in TestCase leverage implicit (implicit to MY code) transactions to clean out the database between tests, but I can't find anywhere if this is true for Factory Girl as well.

Does anyone know if it is true and if so, is there a way to turn it off for specific tests, but not all of the tests?

thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遗心遗梦遗幸福 2024-11-23 23:18:11

FactoryGirl 只需获取您的模型,设置属性,然后在该模型上调用#save。我认为你只需要改变一个设置。使用 RSpec,您的 spec_helper.rb 文件中应该有一行:

    config.use_transactional_fixtures = true

此配置被发送到 Rails 测试配置。然后在 #setup_fixtures< 中使用它/a> 方法。

Rails 文档事务固定装置

华泰

FactoryGirl just takes your model, sets the attributes, and calls #save on that model. I think you just need to change a setting. With RSpec, you should have a line in your spec_helper.rb file:

    config.use_transactional_fixtures = true

This config is sent to the Rails testing config. This is then used in the #setup_fixtures method.

The documentation on Rails transactional fixtures

HTH

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文