我已经为order
和order_items
灯具添加了一个依赖项(已经存在),但是每次运行我的rspec工作者测试时都会收到以下错误。
ActiveRecord::StatementInvalid:
Mysql2::Error: Table 'inventory_test10.order_packages' doesn't exist: SHOW FULL FIELDS FROM `order_packages` /*controller:,action:,line:*/
我有一个order
,其中包含许多order_items
和许多order_packages
。 order_items
也属于order_packages
。因此,我能够做到:
order.order_items.each do |oi|
put oi.order_package.status
end
最初的问题是nil类没有识别状态,因为从未创建order_packages.yml
灯具。我已经尝试了几个rake任务,但是我并不熟悉固定装置,迁移,rake任务等等,而且我不确定我是否意外地导致错误运行多次。以下是博客的一个片段,警告多次运行该命令 - http://brandonhilkert.com/blog/using-rails-fixtures-to-seed-a-database/:
rake db:fixtures:load FIXTURES = credit_card_types
警告,如果我们多次运行此命令,它将播种 该表多次。它不是幂等的。
我跑的其他任务:
提前感谢任何建议!
答案 0 :(得分:1)
您的测试框架应在测试运行开始时自动加载fixture,并在测试运行结束时删除它们。你自己不需要加载灯具。
夹具将数据加载到表中;它们不会改变数据库结构。迁移可以通过创建/删除表,添加/删除列等来更改数据库。如果遇到丢失表的问题,则非常类似于迁移问题。
我建议审核Guide to Testing Rails Applications和(如果您使用的是RSpec)rspec-rails documentation,它会更深入地解释这些概念。