Rails 3 / RSpec: тесты контроллеров - доступ к функции класса в моем тесте возвращает ошибку SQLite3 :: SQLException «нет такой таблицы» - PullRequest
0 голосов
/ 16 января 2011

У меня есть Page scaffold, который я создал с помощью рельсов, создающих леса. Я запустил rake db: migrate, и просмотр базы данных через SQLite Database Browser показывает, что она действительно существует. Я могу перейти к консоли рельсов и запустить:


    Page.all.each {|page| puts page.url}

Когда я запускаю это, он фактически возвращает правильные результаты (например, значение url для каждой записи страницы.

То, что я пытаюсь сделать, это настроить тест rspec в моем тесте контроллера страниц, чтобы увидеть, что каждый из маршрутов, которые я настроил в config / rout.rb, действительно работает. Итак, у меня есть тест, определенный в spec / controllers / pages_controller_spec.rb следующим образом:


describe PagesController do

    Page.all.each do |page|
        describe "GET /#{page.url}" do
            it "should be able to get at page at #{page.url}" do
                get "/#{page.url}"
                response.should be_successful
            end
        end
    end

end

Этот тест не запускается. Вместо этого он генерирует следующее сообщение:


C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log': SQLite3::SQLException: no such table: pages: SELECT     "pages".* FROM       "pages" (ActiveRecord::StatementInvalid)

Кто-нибудь знает, что происходит? Или, в качестве альтернативы, кто-нибудь знает, почему это будет работать в моей Rails Console, но не в моих тестах rspec?

Большое спасибо. Я относительно новичок в Rails, поэтому все еще многому учусь!

1 Ответ

1 голос
/ 16 января 2011

Запустите rake db:test:prepare, чтобы убедиться, что схема базы данных настроена в тестовой среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...