回滚迁移后,Rails测试表不存在。

3

我认为这是一个非常愚蠢的问题:我刚刚在一个新的演示应用程序中创建了一个名为person_emails的表,现在我把它删除了。然后我开始测试,当我在一个名为line_item的不相关模型上运行单元测试时,我得到了“ActiveRecord :: StatementInvalid:Mysql :: Error:Table 'depot_test.person_emails'不存在:DELETE FROM person_emails

我确实运行了rake db:test:prepare和rake db:migrate RAILS_ENV = test。

此外,我在line_items表中有一个名为“price”的列,我使用迁移将其删除,但测试仍然测试它并引发错误。在还原迁移或使用迁移删除列后,是否有什么我总是应该为测试做的事情?

有什么想法吗?

谢谢!

1个回答

10

我非常确定这是因为您仍然有一个名为 person_emails 的 fixture 文件!在加载 fixture 数据之前,它正在尝试清除该表。检查是否有一个名为 test/fixtures/person_emails.yml 的文件,并将其删除,问题就会解决。


成功了!所以我猜当你还原一个迁移时,迁移添加到固定装置中的行不会被删除,你必须手动删除它们。谢谢! - Nik So

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接