首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails TestCase UndefinedColumn

Rails TestCase UndefinedColumn
EN

Stack Overflow用户
提问于 2015-12-08 04:49:46
回答 3查看 72关注 0票数 0

全新的铁路世界。使用4.2.4。

我正试图为我的应用程序创建一个模型,并为其编写一些单元测试,但在运行更改迁移之后,我遇到了困难。我创建了一个模型

rails生成模型播放器first_name:string last_name:string dispaly_name:string

并运行rake db:migrate RAILS_ENV=test

然后,我编写了一个(失败的)单元测试,以确保在调用保存时设置了正确的字段。此时,我意识到我拼错了dispaly_name,所以我创建了一个更改迁移,该迁移修复了列名。

现在,当我试图运行单元测试rake test test/models/player_test.rb时,我得到了一个错误(UndefinedColumn),它说保存失败了,因为Player模型仍然试图用dispaly_name而不是display_name保存。我运行rake db:migrate rake db:migrate RAILS_ENV=test rake db:test:prepare并运行rails cRAILS_ENV=test rails c,并通过运行Player.column_names检查列名是否正确设置。我还检查了schema.rb。一切似乎都井然有序,但我不明白为什么我的测试用例中的Player.new使用旧的列名。

有人能解释一下发生了什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-08 05:29:10

我明白了:

当您创建模型时,将创建一个与测试文件一起的夹具。

您使用字段名dispaly_name创建了模型,并在文件YourApp/test/fixtures/player_test.yml中创建了字段dispaly_name。对吗?。

但问题是,当您将字段名更改为display_name时,它也会在MODELTABLE中更改,而不会在夹具文件中更改。因此,您需要更正您的字段在夹具文件也。

请在文件dispaly_name YourApp/test/fixtures/player_test.yml中更改字段名

我希望它能起作用:)

票数 2
EN

Stack Overflow用户

发布于 2015-12-08 12:27:11

根据您用来填充测试db、FactoryGirlFixtures或Rails应用程序提出的默认Fixtures的内容,在那里更改数据字段名。那么错误就会消失。

如果错误仍然存在,请尝试重新启动服务器。我不认为这样重新启动服务器会有任何效果,但只是尝试一下。

票数 0
EN

Stack Overflow用户

发布于 2015-12-08 14:36:41

尝试运行bundle exec rake:test:clone,这将从当前的开发模式重新创建测试db架构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34148235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档