用于'assert'的Ruby未定义方法:class

时间:2011-06-17 16:44:15

标签: ruby unit-testing sinatra

我正在尝试使用ruby中的 Test :: Unit :: TestCase API来进行一些单元测试但是遇到了使用assert的问题。我只是尝试在使用 Test :: Unit :: TestCase 类的类中调用特定方法,但它一直在断言失败。在我的rake文件中,我有:

require 'test_file'

task :manage do 
     my_app = Test::Unit::TestCase::Unit_Test
     my_app.test1
end

在我的test_file.rb中,我有:

require 'rubygems'
require 'test/unit'
require 'rack/test'

class Unit_Test < Test::Unit::TestCase
  include Rack::Test::Methods
    # manage tests
    def self.test1
      browser = Rack::Test::Session.new(Rack::MockSession.new(Sinatra::Application))
      browser.get '/homepage'
      assert browser.last_response.ok?
    end
end

一切正常,直到我得到'assert'语句,其中说明: Unit_Test的未定义方法断言:Class 。如果我不使方法成为静态方法,那么它将运行Unit_Test类中的所有方法。我只想从我的rake文件中运行特定的单元测试。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我想不出从类方法中使用assert的好方法,因为assert是一个实例方法。

如果您只想运行特定的测试方法,最好将测试作为实例方法并使用name参数,例如:

ruby test_file.rb --name test1

您应该可以从佣金任务中调用它。