【发布时间】:2010-12-26 07:23:16
【问题描述】:
我正在使用 seed.rb 来填充一些状态模型参考数据:
State.create :name => 'Alabama', :abbreviation => 'AL'
State.create :name => 'Alaska', :abbreviation => 'AK'
# ...
虽然我没有使用状态装置(因为它最初是种子数据,我认为纯粹为了测试而必须复制它并不是 DRY),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
我已经尝试在基类测试装置语句中明确列出非状态模型,以及翻转事务装置标志(正如预期的那样,这只会影响测试期间创建的记录)。当然,正在考虑的测试本身不会删除这些记录。
状态记录总是被删除。有没有办法让 Rails 从种子数据中解放出来?我是否需要复制夹具中的所有数据以确保重新加载?在没有重大政治事件的情况下,我预计州数据会相对稳定。
tia
【问题讨论】:
-
谢谢大家,我将尝试 Luke 的(一次性)和 weppos 的(设置时)建议在测试中显式加载种子数据,看看哪一个最适合我的目的。我会认为测试总是首先核对数据库数据。
标签: ruby-on-rails ruby testing fixtures seed