编写Rails插件的测试

时间:2010-03-16 10:56:09

标签: ruby-on-rails unit-testing ruby-on-rails-plugins

我正在为Rails创建一个插件,它会为ActiveRecord的查找器添加有限的内存缓存。功能本身已经足够成熟,但我不能为我的生活让单元测试与插件一起工作。

我现在在vendor / plugins / my_plugin / test / my_plugin_test.rb下有一个ActiveSupport :: TestCase的标准子类,有几个基本测试。我尝试从插件目录运行'rake test',我已经确认此任务使用测试用例加载ruby文件,但它实际上并没有运行任何测试。

我遵循适用的Rails插件指南(http://guides.rubyonrails.org/plugins.html),但它似乎非常过时(它表明Rails现在会自动执行等等)。

我得到的唯一输出是:

Kakadu:ingenious_record adam$ rake test
(in /Users/adam/Sites/1_PRK/vendor/plugins/ingenious_record)
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:lib:test "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/ingenious_record_test.rb" 

最简单的测试用例如下所示:

require 'test_helper'
require 'active_record'

class IngeniousRecordTest < ActiveSupport::TestCase  
  test "example" do
    assert false
  end
end

这肯定会产生至少一些输出,并且该文件中唯一的测试应该会产生失败的断言。

我可以做些什么来让Rails运行我的测试?

2 个答案:

答案 0 :(得分:5)

我使用Engines插件的rake任务测试我的插件:

rake test:plugins:all PLUGIN=myplugin

我确信你可以在没有引擎的情况下做到这一点,但这是一个选择。最新版本的Rails(我仍然在2.2.2)已经集成了Engines支持。

答案 1 :(得分:3)

显然rails 2.2.3有一点问题,因为它不包含插件中的'test / unit'包/文件。 为了解决您的插件问题,只需将以下内容添加到test_helper.rb文件的顶部:

require 'test/unit'

lighthouse找到它。

相关问题