您的方法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
包括行分隔符,所以它返回一个包含两个元素的数组"YHOO,"
(注意逗号)和"141414"
. 您期待一个包含一个元素的数组"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