从已删除的表列中获取测试错误

时间:2013-07-04 08:41:31

标签: ruby-on-rails ruby sqlite rake-test

所以我为我的ruby on rails项目生成了一个脚手架,但发现我添加了一个我不再需要的列。

我生成了迁移并删除了额外的列。

然后我删除了代码中调用它的所有位置。

但是,当我进行“rake测试”时,我遇到了几个错误,他们似乎指向这个不存在的列,我修改了controller_test.rb

  @foo = foos(:one)
  @update = {
  title:       'Lorem Ipsum',
  description: 'Wibbles are fun!',
  image_url:   'lorem.jpg',
  start_date:  '12/12/13',
  end_date:    '13/12/13'
  }

我还修改了应该创建测试并应该更新测试

 test "should create foo" do
 assert_difference('Foo.count') do
  post :create, foo: @update 
 end

和这个

 test "should update foo" do
 put :update, id: @foo, foo: @update 
 assert_redirected_to foo_path(assigns(:foo))
 end

任何帮助都会非常感激,如果需要更多信息,我可以提供更多

2 个答案:

答案 0 :(得分:1)

经过几个小时的坚持后,我发现了这个问题。

虽然从表中删除了列,但在项目中仍然有对它的引用,在我的情况下它就在这里test / fixtures / foo.yaml

找出所有特定的行(如果你的IDE没有搜索功能)提到你的git bash你工作的地方并运行

 $ grep -r "search term" *

它挑选了搜索词所在的Dir,之后只是删除所有引用的简单案例

请注意,此命令会为您分配的内容提供分配线。

答案 1 :(得分:0)

你是铁杆新手吗?如果是的话,你能告诉我你在追踪什么指南吗?你是如何生成脚手架的

脚手架创建了所有这些文件

  invoke  active_record
  create    db/migrate/20130704111616_create_products.rb
  create    app/models/product.rb
  invoke    test_unit
  create      test/models/product_test.rb
  create      test/fixtures/products.yml
  invoke  resource_route
   route    resources :products
  invoke  scaffold_controller
  create    app/controllers/products_controller.rb
  invoke    erb
  create      app/views/products
  create      app/views/products/index.html.erb
  create      app/views/products/edit.html.erb
  create      app/views/products/show.html.erb
  create      app/views/products/new.html.erb
  create      app/views/products/_form.html.erb
  invoke    test_unit
  create      test/controllers/products_controller_test.rb
  invoke    helper
  create      app/helpers/products_helper.rb
  invoke      test_unit
  create        test/helpers/products_helper_test.rb
  invoke    jbuilder
  create      app/views/products/index.json.jbuilder
  create      app/views/products/show.json.jbuilder
  invoke  assets
  invoke    coffee
  create      app/assets/javascripts/products.js.coffee
  invoke    scss
  create      app/assets/stylesheets/products.css.scss
  invoke  scss
  create    app/assets/stylesheets/scaffolds.css.scss

由active_record,scaffold_controller和test_unit创建的文件可能会导致测试错误,请检查它们是否有任何不应该存在的内容。

同时尝试删除development.sqlite3和test.sqlite3并再次运行rake db:migrate

还有rails destroy命令将删除所有自动生成的文件