私の問題に関する回答を検索したと思いますが、それに回答する投稿はありませんでした。LocalJumpError に関するもう 1 つの質問があります...
私は Ruby の比較的初心者であり、コーディングするすべての Ruby の前に、適切なプラクティスに従ってテストを作成することにしました。
しかし、ここで私には理解できない小さな問題のようなものがあります。ここに私のテストがあります:
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
上記の特定のテストを検証するためのコードは次のとおりです。
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
したがって、FilesInfoLogger.get_log('foo')
irb を実行すると、すべてが正常に動作しているように見えます。つまり、何も発生していません。しかし、テストを実行すると、これを返すのに失敗します:
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)>>.
特にblock_given?
. 私は何が欠けていますか?
回答ありがとうございます。