gpt4 book ai didi

ruby-on-rails - 防止 Rails 测试删除种子数据

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

我正在使用 seeds.rb 填充一些状态模型引用数据:

State.create :name => 'Alabama', :abbreviation => 'AL'
State.create :name => 'Alaska', :abbreviation => 'AK'
# ...

虽然我没有使用状态固定装置(因为它是种子数据,我认为纯粹为了测试而复制它不会是 DRY),Rails 测试框架似乎删除了所有状态种子数据测试。 (我正在删除、重新创建、迁移和重新播种测试数据库,并在单元测试运行之前确认数据在那里。)

结果是此断言在 seeds.rb 中成功但在单行测试中失败:

assert_equal 51, State.all.size

1) Failure:
test_state_seeds_are_present(StateTest) [/test/unit/state_test.rb:24]:
<51> expected but was
<0>.
1 tests, 1 assertions, 1 failures, 0 errors

我已经尝试在基础测试类固件语句中明确列出非状态模型,以及翻转事务固件标志(正如预期的那样,这只会影响在测试期间创建的记录)。当然,正在考虑的测试本身并不会删除这些记录。

状态记录总是被删除。有没有办法告诉 Rails 只管处理种子数据?我是否需要复制 fixtures 中的所有数据以确保它被重新加载?除非发生重大政治事件,否则我预计州数据会相对稳定。

蒂亚

最佳答案

测试从数据库中删除所有数据,然后加载您的固定装置(如果有的话)。

您需要让您的测试助手在测试运行之前加载种子文件。有几种方法可以做到这一点,请查看我的类似问题:How to load db:seed data into test database automatically?

最简单的方法可能就是添加

需要“#{Rails.root}/db/seeds.rb”

到您的 test_helper.rb 文件的顶部(假设您使用内置测试框架)。

关于ruby-on-rails - 防止 Rails 测试删除种子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1898782/

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