10

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

我非常喜欢使用 RSpec,但可能会采用 Test::Unit 解决方案,或者只使用 Test::Unit。

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

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

4

1 回答 1

12

看看其他插件(插件和 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

当您想要测试控制器操作等时会变得更加困难。我的实时验证插件有一个相当广泛的测试套件,它可以模拟很多东西并让我将 ERb 视图作为字符串传递,你可以看看。

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

于 2009-04-07T08:04:36.977 回答