Rails 测试用例未定义列
Rails TestCase UndefinedColumn
rails 世界的新手。使用 4.2.4.
我正在尝试为我的应用程序创建一个模型并为其编写一些单元测试,但是在 运行 进行更改迁移后我 运行 遇到了困难。我用
创建了一个模型
rails generate model player 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 c
和 RAILS_ENV=test rails c
并检查列名称是否由 运行宁Player.column_names
。我还检查了 schema.rb
。一切似乎都井井有条,但我不明白为什么我的测试用例中的 Player.new
使用旧的列名。
谁能解释一下这是怎么回事?
我知道了:
when you create model then a fixture along with test file is created.
您使用字段名称 dispaly_name
创建了模型,并在文件 YourApp/test/fixtures/player_test.yml
中创建了一个字段 dispaly_name
。正确的?。
但问题是,当您将字段名称更改为 display_name
时,它在 MODEL
和 TABLE
中也会发生变化,但不会在夹具文件中发生变化。所以你也需要更正夹具文件中的字段。
请更改文件 YourApp/test/fixtures/player_test.yml
中的字段名称 dispaly_name
我希望它会起作用:)
根据您用来填充测试数据库的内容,FactoryGirl、Fabrication 或默认的 Fixtures 提出一个 Rails 应用程序,更改那里的数据字段名称。然后错误就会消失。
如果错误仍然存在,请尝试重新启动服务器以防万一。我认为重启服务器不会有任何影响,只是尝试一下。
尝试 运行 bundle exec rake:test:clone
,这会从当前开发模式重新创建测试数据库模式。
rails 世界的新手。使用 4.2.4.
我正在尝试为我的应用程序创建一个模型并为其编写一些单元测试,但是在 运行 进行更改迁移后我 运行 遇到了困难。我用
创建了一个模型rails generate model player 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 c
和 RAILS_ENV=test rails c
并检查列名称是否由 运行宁Player.column_names
。我还检查了 schema.rb
。一切似乎都井井有条,但我不明白为什么我的测试用例中的 Player.new
使用旧的列名。
谁能解释一下这是怎么回事?
我知道了:
when you create model then a fixture along with test file is created.
您使用字段名称 dispaly_name
创建了模型,并在文件 YourApp/test/fixtures/player_test.yml
中创建了一个字段 dispaly_name
。正确的?。
但问题是,当您将字段名称更改为 display_name
时,它在 MODEL
和 TABLE
中也会发生变化,但不会在夹具文件中发生变化。所以你也需要更正夹具文件中的字段。
请更改文件 YourApp/test/fixtures/player_test.yml
dispaly_name
我希望它会起作用:)
根据您用来填充测试数据库的内容,FactoryGirl、Fabrication 或默认的 Fixtures 提出一个 Rails 应用程序,更改那里的数据字段名称。然后错误就会消失。
如果错误仍然存在,请尝试重新启动服务器以防万一。我认为重启服务器不会有任何影响,只是尝试一下。
尝试 运行 bundle exec rake:test:clone
,这会从当前开发模式重新创建测试数据库模式。