Ruby on Rails:如何为插件生成测试?

时间:2014-02-24 17:48:17

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

我正在关注Ruby on Rails guide for creating Plugins,我甚至无法生成教程所需的第一个测试。取自教程:

Tutorial 1st Test

对我而言,这意味着使用这样的生成器创建测试?:

yaffle $ rails g test core_ext

不起作用,任何人都可以向我解释,

我应该如何为Ruby on Rails插件生成测试?

我知道插件附带 / test Dir 本身下的虚拟应用(实际上可以从中发出rails命令),但是< / strong>注意Tutorial显示测试文件是在project_root(yaffle)/ test下创建的,而不是在project_root(yaffle)/ test / dummy / test /

我真的对此感到困惑,我如何实际生成本教程所需的测试?

提前感谢您的解释。

2 个答案:

答案 0 :(得分:1)

据我所知,没有用于测试的发生器。您从根运行rake test并手动编写测试。

教程告诉您在哪里制作测试文件,要命名的内容以及要放入的代码:

# yaffle/test/core_ext_test.rb
# This is the location and name of the test file^
# Everything below this line is what you put in core_ext_test.rb

require 'test_helper'

class CoreExtTest < Test::Unit::TestCase
  def test_to_squawk_prepends_the_word_squawk
    assert_equal "squawk! Hello World", "Hello World".to_squawk
  end
end

答案 1 :(得分:0)

“我应该如何为Ruby on Rails插件生成测试?”

运行插件生成器时,请参阅http://guides.rubyonrails.org/v2.3.11/plugins.html,还会创建关联的测试文件。但是,如果没有,下面是您可以手动创建它们的方法。

test目录的根目录中,您至少需要两个文件。

A test_helper.rb。这是执行测试的引导程序。默认情况下,这应该已经存在。我的设置允许测试从rails应用程序执行(虚拟/),如果你有任何。请注意,我也在为虚拟轨道应用程序加载灯具。由于Rails4错误,默认Yaffle示例有一处更改(请参阅注释内联)。

 # Configure Rails Environment
 ENV["RAILS_ENV"] = "test"

 require File.expand_path("../dummy/config/environment.rb",  __FILE__)
 require "rails/test_help"

 Rails.backtrace_cleaner.remove_silencers!

 # Load support files
 Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
 Dir.glob("#{File.dirname(__FILE__)}/dummy/app/models/*.rb").sort.each { |file| require_dependency file }

 # see https://github.com/rails/rails/issues/4971 for why we cant test this method
 #if ActiveSupport::TestCase.method_defined?(:fixture_path=)
 ActiveSupport::TestCase.fixture_path = File.expand_path("../dummy/test/fixtures", __FILE__)
 #end

 # Load fixtures from the engine
 class ActiveSupport::TestCase

  set_fixture_class :users => "User"

  fixtures :all
 end

您的yaffle_test.rb最初可能是一个非常简单的真相测试

 require 'test_helper'

class YaffleTest < ActiveSupport::TestCase
   test "Yaffle is a module" do
     assert_kind_of Module, Yaffle
   end
end