Rails: старая, несуществующая таблица базы данных вызывает тесты на ошибку

Я пытаюсь запустить "правду" unit test, mac_test.rb в приложении Rails, которое я недавно получил. Это выглядит так:

    require 'test_helper'

    class MacTest < ActiveSupport::TestCase
      # Replace this with your real tests.
      test "the truth" do
        assert true
      end
    end

Я запустил rake db:test:prepare, и я пытаюсь запустить тест, используя ruby -I test test/unit/mac_test.rb.

Однако я получаю следующий сокращенный вывод ошибки:

    Loaded suite test/unit/mac_test
    Started
    EEEEEEEEEEEEEEE
    Finished in 0.377261 seconds.

      1) Error:
    test_datas(ActionController::IntegrationTest):
    ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: vendors: DELETE FROM "vendors" WHERE 1=1


      2) Error:
    testjigs(ActionController::IntegrationTest):
    ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: vendors: DELETE FROM "vendors" WHERE 1=1


      3) Error:
    test_datas(ActionController::TestCase):
    ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: vendors: DELETE FROM "vendors" WHERE 1=1

    <more errors here>

    15 tests, 0 assertions, 0 failures, 15 errors

Все 15 ошибок похожи на первые три - они жалуются на недостающую таблицу поставщиков. Поставщик, видимо, существовал - были некоторые оставшиеся файлы, такие как vendor_helper, а также файл map.resources :vendor в файле routes.rb. Я удалил старые файлы поставщиков и удалил файл map.resources: vendor.

Таким образом, нет модели, представления, контроллера, теста, таблицы базы данных или всего, что было названо поставщиком/поставщиками. Используя TextMate для поиска проекта (без учета регистра) для "vendor", было только одно появление "поставщика", которого не было в комментарии, файле журнала, README или файле boot.rb, и это было в Capfile. (Что я не думаю, что это должно повлиять на тесты?)

Я попытался использовать rake db:reset, чтобы увидеть, была ли это какая-то странная вещь базы данных, но она все еще взрывается.

Если я пытаюсь использовать rake test:units --trace (просто чтобы получить трассировку, я не знаю, как получить трассировку с отдельным тестом) Я получаю сокращенный вывод:

    ** Invoke test:units (first_time)
    ** Invoke db:test:prepare (first_time)
    ** Invoke db:abort_if_pending_migrations (first_time)
    ** Invoke environment (first_time)
    ** Execute environment
    ** Execute db:abort_if_pending_migrations
    ** Execute db:test:prepare
    ** Invoke db:test:load (first_time)
    ** Invoke db:test:purge (first_time)
    ** Invoke environment 
    ** Execute db:test:purge
    ** Execute db:test:load
    ** Invoke db:schema:load (first_time)
    ** Invoke environment 
    ** Execute db:schema:load
    ** Execute test:units
    /usr/local/bin/ruby -I"lib:test" "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/auth_code_test.rb" "test/unit/cal_data_test.rb" "test/unit/calibration_test.rb" "test/unit/helpers/auth_codes_helper_test.rb" "test/unit/helpers/jn_macs_helper_test.rb" "test/unit/jn_mac_test.rb" "test/unit/log_entry_test.rb" "test/unit/mac_test.rb" "test/unit/option_test.rb" "test/unit/q_test_test.rb" "test/unit/serial_test.rb" "test/unit/source_test.rb" "test/unit/test_data_test.rb" "test/unit/testjig_test.rb" 
    Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader
    Started
    EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
    Finished in 1.06271 seconds.

      1) Error:
    test_datas(ActionController::IntegrationTest):
    ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: vendors: DELETE FROM "vendors" WHERE 1=1

    <more similar errors>

    52 tests, 0 assertions, 0 failures, 52 errors
    rake aborted!
    Command failed with status (1): [/usr/local/bin/ruby -I"lib:test" "/usr/loc...]
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:995:in `sh'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1010:in `call'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1010:in `sh'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1094:in `sh'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1029:in `ruby'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1094:in `ruby'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/testtask.rb:117:in `define'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1112:in `verbose'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/testtask.rb:102:in `define'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
    /usr/local/lib/ruby/1.8/monitor.rb:242:in `synchronize'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
    /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
    /usr/local/bin/rake:19:in `load'
    /usr/local/bin/rake:19

Я не понимаю, как заставить это не взорваться. Может ли кто-нибудь помочь мне найти способ заставить Rails понять, что больше не должно быть "продавцов"?

Изменить: я использую Rails 2.3.2 и ruby ​​1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9.7.0]

Ответ 1

Проверьте тестовую папку для файла привязки, называемого vendors.yml. Если он там и у вас нет таблеток поставщиков, вы получите эти ошибки, потому что Rails по умолчанию пытается заполнить таблицу ваших поставщиков данными из этого файла.

Ответ 2

Возможно, ваш файл {RAILS_ROOT}/db/schema.rb по-прежнему содержит некоторую информацию об этой таблице предыдущих поставщиков. Информация в этом файле используется для создания тестовой среды. Если он содержит информацию о таблицах продавцов, вы можете запустить rake db: schema: dump, чтобы обновить этот файл, а затем повторите тесты.