gpt4 book ai didi

ruby-on-rails - Ruby on Rails2.3.8 : Unit Testing: Rails/Ruby has setup to run before each test. 在所有测试之前运行的方法怎么样?

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:33 25 4
gpt4 key购买 nike

我想在每次运行测试时初始化数据库一次,而不是每次测试。我知道 Rspec 有 before(:all),但我无法让它工作。我想知道 Rails 是否有类似的东西。

最佳答案

首先:在 Test::Unit 中曾经有一个 before(:all) 等价物,但它被删除了(不知道为什么)。

其次:有很好的理由不做你想做的事——测试应该相互独立运行,而不是依赖于数据库中的状态。这样您就可以保证它完全测试您期望它测试的内容。

如果您有一个更改数据库状态的测试,并且您移动它并且它在另一个期望它是另一种状态的测试之后运行 - 您会遇到问题。因此,所有测试必须是独立的。

因此:数据库回滚到其原始状态并每次重新播种。

如果您真的想要数据库始终处于某种状态 - 然后在固定装置中设置它......并且只需意识到将为每个测试重新加载数据库。

如果您在加载时间方面遇到问题......那么请考虑找出解决该问题的其他方法 - 例如,不要使用大量的固定装置,而是使用工厂来仅为每个人创建您需要的数据测试。

如果有其他原因...让我们知道 - 我们可能有解决方案。

编辑:如果你真的需要它,我其实很久以前就为此写了一个猴子补丁: "faking startup and shutdown"

关于ruby-on-rails - Ruby on Rails2.3.8 : Unit Testing: Rails/Ruby has setup to run before each test. 在所有测试之前运行的方法怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6426574/

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