有没有办法使用minitest来模拟/存根文件读取和写入(文本文件)而不实际存在它们?
实际代码类似于
def write_to_file(filename)
f = File.open(filename,"w")
f.puts "hello world"
f.close
end
我真的不知道如何尝试,因为我找不到任何模拟文件IO的例子,只比较变量
答案 0 :(得分:1)
如果我打算按照你的建议行事,我会将def test_something_that_reads_a_file
file_mock = Minitest::Mock.new
file_mock.expect(:readline, "It was the best of times...")
File.stub(:open, file_mock) do
# your test logic here
end
file_mock.verify
end
发送给我一个类似的模拟:
EOF
你仍然有在某个时刻返回File#readline
的问题,但是否这对你来说是一个问题取决于你没有给出你所写的内容。
但是有几个原因导致我可能永远不会像这样处理问题。
using (var command = new SqlCommand("dbo.test", connection) {
CommandType = CommandType.StoredProcedure })
{
connection.Open();
Console.WriteLine("ConnectionTimeout: {0}",
connection.ConnectionTimeout);
command.CommandTimeout = 120;
command.ExecuteNonQuery();
Console.WriteLine("Finished");
connection.Close();
}
的语义明天可能不会改变,但是假设一个不受你控制的界面是一种不好的做法。我将采用的方法是包含一个小测试文件并实际读取它。因此,您的测试将更容易理解。