在Rails下测试Ruby Gems

我正在创建一些可以在Rails控制器和视图中使用的gem。 我希望能够独立测试gem。 但是我无法弄清楚如何在gem中创建Rails实例来测试gem将在Rails应用程序中运行。

我更喜欢使用RSpec,但可能适应Test :: Unit解决方案,或者只使用Test :: Unit。

我也对Rails插件的类似解决方案感兴趣。

(我尝试使用谷歌搜索,但“rails gem testing”向我展示了用于测试的gem,而不是如何测试gem。我很确定我在这个主题上看过一篇或两篇文章。)

看看其他插件(插件和gem,同样的东西)测试套件。

测试增强Active Record的插件非常简单。 您可以在任何地方使用Active Record ,因此在这种情况下您需要做的就是将Active Record连接到数据库(例如内存中的sqlite数据库)并测试您的codez。

# test/test_helper.rb $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib') require 'your_thing' ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:") ActiveRecord::Schema.define(:version => 1) do create_table :posts do |t| t.string :title t.text :excerpt, :body end end class Post < ActiveRecord::Base validates_presence_of :title end # test/my_test.rb require 'test_helper' class MyTest < Test::Unit::TestCase def test_thing # use Post here end end 

当你想测试控制器动作等时,它会变得更难。 我的实时validation插件有一个非常广泛的测试套件,可以模拟很多东西并让我将ERb视图作为字符串传递,你可以看一下。

将这些Test :: Unit示例改编为RSpec应该是微不足道的,因为它们不会依赖于Test :: Unit中的任何内容。