[英]Rails 3 / RSpec: Controller tests — access to a class function in my test returns an SQLite3::SQLException “no such table” error
我有一个通过导轨创建的Page脚手架生成脚手架。 我运行了db:migrate,然后通过SQLite数据库浏览器查看数据库,发现它实际上存在。 我可以转到rails控制台并运行:
Page.all.each {|page| puts page.url}
当我运行它时,它实际上会返回正确的结果(例如,每个Page记录的url值)。
我想做的是在我的页面控制器测试中设置一个rspec测试,以查看我在config / routes.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的新手,所以仍然学到很多东西!
运行rake db:test:prepare
以确保在测试环境中设置了数据库模式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.