メソッドget_symbols_from_fileがテストで呼び出されることはありません。動作することをテストしているだけです。StringIO#readlinesつまり、次のようになります。
StringIO.new("YHOO,141414").readlines == ["YHOO,141414"] #=> true
ファイルのプレースホルダーとしてインスタンスを使用する場合は、ファイル名ではなくインスタンスStringIOを取るようにメソッドを変更する必要があります。File
def get_symbols_from_file(file)
file.readlines(',')
end
Fileとインスタンスの両方が にStringIO応答するreadlinesため、上記の実装は両方を処理できます。
def test_get_symbols_from_file
s = StringIO.new("YHOO,141414")
assert_equal(["YHOO,141414"], get_symbols_from_file(s))
end
ただし、このテストは失敗します。readlines行セパレーターが含まれているため、2 つの要素"YHOO,"(コンマに注意) と"141414". 要素が 1 つの配列が必要"YHOO,141414"です。
多分あなたはこのようなものを探しています:
def test_get_symbols_from_file
s = StringIO.new("YHOO,141414")
assert_equal(["YHOO", "141414"], get_symbols_from_file(s))
end
def get_symbols_from_file(file)
file.read.split(',')
end
本当に使用したい場合はIO::readlines、次を作成できますTempfile。
require 'tempfile'
def test_get_symbols_from_file
Tempfile.open("foo") { |f|
f.write "YHOO,141414"
f.close
assert_equal(["YHOO", "141414"], get_symbols_from_file(f.path))
}
end