2014-03-19 87 views
1

我有Ruby類:紅寶石單元測試(gets.chomp)

class Sample 
    def main 
    zipcode = gets.chomp 

    if correct_length?(zipcode) 
    end 

    end 

    def correct_length?(string) 
    true if string.size == 5 
    end 
end 

instance = Sample.new 
instance.main 

並測試它:

require_relative 'sample' 
require 'test/unit' 

class TestSample < Test::Unit::TestCase 
    def test_correct_length? 
    zipcode = '10234' 
    assert_equal(true, Sample.new.correct_length?(zipcode)) 
    end 
end 

我想測試只是correct_length?方法。當我運行測試時,我必須在測試開始前輸入一些字符。我應該如何重寫這個例子只是測試的方法(不運行gets.chomp

+0

將您的方法名更改爲'_main',以避免未來的衝突可能會在頂級'self'。 –

+0

只是爲了我的理解:當你運行測試時,你必須先插入任何郵編?如果是這樣的話:將執行部分移動到另一個ruby文件中,在測試過程中您不需要這些文件。如果我沒有弄錯,他們在require_relative期間執行 - 那麼就像你已經在做的那樣寫測試 –

+0

@TobiasSchoknecht我不想用方法拆分文件。 Falsetru anwser是正確的。 – trojek

回答

2

環繞調用mainif __FILE__ == $0 ... end的一部分;如果運行測試,如果腳本作爲入口點執行,那麼該部分在執行時不會執行。

if __FILE__ == $0 
    instance = Sample.new 
    instance.main 
end