gpt4 book ai didi

ruby-on-rails - 使用 RSpec fixtures 时出现 Mysql2 错误

转载 作者:行者123 更新时间:2023-11-28 20:41:20 24 4
gpt4 key购买 nike

我已经为 orderorder_items 固定装置(已经存在)添加了依赖项,但每次运行我的 rspec worker 时我都会收到以下错误测试。

ActiveRecord::StatementInvalid:
Mysql2::Error: Table 'inventory_test10.order_packages' doesn't exist: SHOW FULL FIELDS FROM `order_packages` /*controller:,action:,line:*/

我有一个订单,它有很多order_items 和很多order_packagesorder_items 也属于 order_packages。因此,我能够做到:

order.order_items.each do |oi|
put oi.order_package.status
end

最初的问题是无法识别 nil 类的状态,因为从未创建 order_packages.yml fixture。我已经尝试过几个 rake 任务,但我对固定装置、迁移、rake 任务等不是很熟悉,我不确定我是否不小心导致了运行多个任务的错误。以下是来自博客的片段,警告多次运行该命令 - http://brandonhilkert.com/blog/using-rails-fixtures-to-seed-a-database/ :

rake db:fixtures:load FIXTURES=credit_card_types

A word of warning, if we run this command multiple times, it will seedthe table multiple times. It’s not idempotent.

我运行的其他任务:

  • FIXTURES=订单; rake db:fixtures:load
  • rake db:fixtures:dump(没用 - 错误)
  • rake db:fixtures:drop(没有用 - 错误)

提前感谢您的任何建议!

最佳答案

您的测试框架应在测试运行开始时自动加载 fixture ,并在测试运行结束时删除它们。您不需要自己加载固定装置。

固定装置将数据加载到表中;它们不会改变数据库结构。迁移可以通过创建/删除表、添加/删除列等方式更改数据库。如果您遇到缺少表的问题,这很像迁移问题。

我建议对 Guide to Testing Rails Applications 进行审查, 和(如果您使用的是 RSpec)rspec-rails documentation ,更深入地解释了这些概念。

关于ruby-on-rails - 使用 RSpec fixtures 时出现 Mysql2 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31297991/

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