2012-01-25 25 views
0

我有一个模块(/lib目录下)是像如何在RoR中对模块进行单元测试?

module Sbs_score_calculator 
    def self.calculate() 
    ... 
    end 
end 

进行计算。我想这个module.So我test/unit

require "test/unit" 
class SbsCalculateTest < Test::Unit::TestCase 

    include Sbs_score_calculator 

    def test_it 
    assert_equals(expected,Sbs_score_calculator.calculate()) 
    end 

end 

下创建一个测试类创建单元测试,但它给了我像

..../sbs_score_test.rb:5:in `<class:SbsCalculateTest>': uninitialized constant SbsCalculateTest::Sbs_score_calculator (NameError) 
    from ..../sbs_score_test.rb:3:in `<top (required)>' 
    from -e:1:in `load' 
    from -e:1:in `<main>' 

任何想法的错误?由于

回答

0

您可以创建一个虚拟类,包括你的模块,像这样:

require "test/unit" 

class CalculatorDummy 
    include Sbs_score_calculator 
end 

class SbsCalculateTest < Test::Unit::TestCase 

    def test_it 
    assert_equals(expected, CalculatorDummy.calculate) 
    end 
end 

有什么理由Sbs_score_calculator未命名SbsScoreCalculator BTW?

+0

命名约定是我的不好。但我试了你的方式,并得到了'NameError:未初始化的常量SbsCalculateTest :: Dummy.' –

+0

,也听起来不像测试模块的最佳实践 –

+0

这听起来像你可能在你的断言中使用了错误的类名。它应该匹配你给你虚拟类的任何类名。 – Frost

相关问题