加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:15:09 所属栏目:百科 来源:网络整理
导读:我正在使用seed.rb来填充一些状态模型参考数据: State.create :name = 'Alabama',:abbreviation = 'AL'State.create :name = 'Alaska',:abbreviation = 'AK'# ... 虽然我没有使用状态灯具(因为它是种子数据开始,我认为不必重复纯粹为了测试),Rails测试框架
我正在使用seed.rb来填充一些状态模型参考数据:
State.create :name => 'Alabama',:abbreviation => 'AL'
State.create :name => 'Alaska',:abbreviation => 'AK'
# ...

虽然我没有使用状态灯具(因为它是种子数据开始,我认为不必重复纯粹为了测试),Rails测试框架似乎在测试期间删除所有状态种子数据. (我正在删除,重新创建,迁移和重新使用测试数据库,并确认数据在单元测试运行之前.)

结果是这种断言在seed.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

我已经尝试在基本测试类fixtures语句中显式列出非状态模型,以及翻转事务夹具标志(如预期的,这仅影响在测试期间创建的记录).当然,正在考虑的测试本身并不是删除这些记录.

国家记录总是被删除.有没有办法告诉Rails只是把握手中的种子数据?我需要复制灯具中的所有数据以确保重新加载吗?没有一个重大的政治事件,我预计国家数据将会相对稳定.

TIA

解决方法

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读