我正在使用Rails 3.1.0在ruby 1.9.2p290(2011-07-09修订版32553)[x86_64-linux]上创建一个全新的完整宝石插件。我在运行rake测试时没有加载架构和灯具时遇到问题。以下是我正在采取的步骤:
创建插件:
rails plugin new core --full
从插件中,生成一个新的脚手架:
rails g scaffold user
运行db create and migrate:
rake db:create
rake db:migrate
运行测试:
rake test
运行功能测试时,我收到一组错误,如控制器测试中的以下错误:
1) Error:
test_should_create_user(UsersControllerTest):
NoMethodError: undefined method `users' for #<UsersControllerTest:0x00000003babca8>
这个错误似乎源于测试似乎不理解夹具调用的事实。它看起来不像测试数据库正在加载架构或加载了灯具。这是预期的行为吗?在这种情况下我有什么遗漏的东西吗?所有的灯具都在那里。是否需要遵循一些流程才能使这些测试正常运行?
答案 0 :(得分:2)
我已将以下内容添加到test_helper:
#Run any available migration
ActiveRecord::Migrator.migrate 'up'
# Set fixtures root
ActiveSupport::TestCase.fixture_path=(File.expand_path("../fixtures", __FILE__))
ActiveSupport::TestCase.fixtures :all
这允许测试环境在虚拟应用程序之外找到我的灯具。
在此更改之后,我仍然遇到测试数据库没有为测试做准备的问题。我通过放入test / dummy目录并运行:
解决了这个问题rake db:test:prepare
在此之后,我能够成功运行“rake test”。不得不投入虚拟应用来准备数据库有点痛苦。必须有办法解决这个问题。有什么建议吗?