gpt4 book ai didi

ruby - 防止 Ruby on Rails 规范中的数据库回滚?

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

当使用 ActiveRecord 在 Ruby on Rails 2.3 中运行 RSpec 测试时,数据库会回滚到每个示例之后的 before :all block 之后的状态(it block ) .

但是,我想说明一个对象的生命周期,这意味着一个一个地检查大量示例,更改状态并测试后置条件。这对于回滚行为是不可能的。

所以澄清一下:

describe MyModel
before :all { @thing = MyModel.create }

it "should be settable" do
lambda { @thing.a_number = 42 }.should_not raise_exception
end

it "should remember things" do
@thing.a_number.should == 42
# this fails because the database was rolled back ☹
end
end

有什么方法可以持久化示例中所做的更改吗?

最佳答案

我同意 normalocity,在这种情况下,看起来您最好使用包含两个断言的单个规范。

有些情况下关闭回滚是有帮助的,例如对于 Capybara 和 Selenium 的更高级别测试,在这种情况下,您可以使用 use_transactional_fixtures 配置选项。你可以把这个

RSpec.configure do |config|
config.use_transactional_fixtures = false
end

关于ruby - 防止 Ruby on Rails 规范中的数据库回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7416812/

25 4 0