メソッド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