运行rake时未加载架构和装置:从新的Rails插件测试

时间:2011-09-22 18:32:47

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-plugins

我正在使用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>

这个错误似乎源于测试似乎不理解夹具调用的事实。它看起来不像测试数据库正在加载架构或加载了灯具。这是预期的行为吗?在这种情况下我有什么遗漏的东西吗?所有的灯具都在那里。是否需要遵循一些流程才能使这些测试正常运行?

1 个答案:

答案 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”。不得不投入虚拟应用来准备数据库有点痛苦。必须有办法解决这个问题。有什么建议吗?