2011-08-07 20 views
0

私の問題についての回答を検索したと思いますが、それに応答する投稿はありませんでした。だからここにLocalJumpErrorについてのもう一つの質問があります...LocalJumpError例外が発生したためにテストが失敗しました(Ruby)

私はRubyの比較的新しい初心者です。私はRubyのすべてのものに先立って良いプラチナとテストを書くことに決めました。

しかし、ちょっとした問題のようなものがありましたが、理解できません。ここに私のテストでは、次のとおりです。私はIRBすべてをFilesInfoLogger.get_log('foo')を実行すると

module FilesInfoLogger 
    extend self 
    def get_log(list) 
    hash = Hash.new {||h,k| h[k] = (block_given?)? yield(k):''} 
    if list.respond_to? :each 
     list.each {|file| hash[file]} 
    else 
     ([]<< list).each {|file| hash[file]} 
    end 
    end 
end 

だから私は何も意味しない、正常に動作するようです:

class TestFilesInfoLoggerHashCreation < Test::Unit::TestCase 
    def setup 
     @logger = FilesInfoLogger 
    end 
    # some other tests 
    def test_shall_not_raise_an_exception_if_argument_is_a_string 
    assert_nothing_raise @logger.get_log('foo') 
    end 
end 

そしてここでは、上記の特定のテストを検証することになっているコードがあります上昇する。しかし、私がテストを実行したとき、それはこの戻っ失敗:試験ユニットに応じて与えられていないブロックについての例外は、私はblock_given?とその条件をテストし、特に以来上げている理由

test_shall_not_raise_an_exception_if_argument_is_a_string(TestFilesInfoLoggerHashCreation) [test/files_info_logger_test.rb:43]: 
{"foo"=>""}. 
Exception raised: 
<#<LocalJumpError: no block given (yield)>>. 

を私は理解していません。私は何が欠けていますか?

ご回答ありがとうございます。

答えて

0

assert_nothing_raisedはブロックを引数として想定しています。代わりに、@logger.get_log('foo')を呼び出した結果を渡しています。試してみてください:

assert_nothing_raised do 
    @logger.get_log('foo') 
end 
+0

私の間違い。ありがとうございました。 –

関連する問題