如何测试不是模型或控制器的代码

时间:2009-03-06 23:09:48

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

我在一个文件中定义了一个类,我的Rails项目的lib目录将实现一堆实用函数作为类方法。我想使用Test :: Unit编写针对这些方法的测试,并将它们作为项目常规测试例程的一部分运行。

我尝试将文件粘贴到test目录的顶层...

require 'test_helper'

class UtilsTest < ActiveSupport::TestCase
  should 'be true' do
    assert false
  end
end

......但那没用。测试没有进行。

测试不是Rails常规部分的代码的正常方法是什么?

3 个答案:

答案 0 :(得分:7)

我只是把它们放在测试/单元中。我不确定这是否是“正确的”方法,但它似乎对我有用......

答案 1 :(得分:4)

您可以将它们放在您的单位目录中而不会有任何复杂情况。

我的图书馆:

[ cpm juno ~/apps/feedback ] cat lib/my_library.rb
class MyLib
  def look_at_me
    puts "I DO WEIRD STUFF"
  end
end

我的测试:

[ cpm juno ~/apps/feedback ] cat test/unit/fake_test.rb
require 'test_helper'

class FakeTest < ActiveSupport::TestCase
  # Replace this with your real tests.
  def test_truth
    require 'my_library'

    puts "RUNNING THIS NOW"
    MyLib.new.look_at_me
    assert true
  end
end

运行它:

[ cpm juno ~/apps/feedback ] rake test:units
(in /home/cpm/apps/feedback)
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/unit/fake_test.rb"
Loaded suite /usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader
Started
RUNNING THIS NOW
I DO WEIRD STUFF
.
Finished in 0.254404 seconds.

1 tests, 1 assertions, 0 failures, 0 errors
Loaded suite /var/lib/gems/1.8/bin/rake
Started

Finished in 0.00094 seconds.

0 tests, 0 assertions, 0 failures, 0 errors

只要它在_test.rb中结束,就应该把它拿起来。

答案 2 :(得分:1)

这是测试辅助功能的te​​st \ functional \ application_helper_test.rb的示例

require File.dirname(__FILE__) + '/../test_helper'

require 'application_helper'

class HelperTest < Test::Unit::TestCase
    include ApplicationHelper

    def test_clear_search_string
        assert_equal 'Park Ave', clear_search_string('street Park Ave')
    end
end