ruby - RSpec:如何测试文件操作和文件内容

标签 ruby file testing rspec file-io

在我的应用程序中,我有以下代码:

File.open "filename", "w" do |file|
  file.write("text")
end

我想通过 RSpec 测试这段代码。这样做的最佳做法是什么?

最佳答案

我建议为此使用 StringIO 并确保您的 SUT接受要写入的流而不是文件名。这样,可以使用不同的文件或输出(更可重用),包括字符串 IO(有利于测试)

因此在您的测试代码中(假设您的 SUT 实例是 sutObject 并且序列化程序被命名为 writeStuffTo:

testIO = StringIO.new
sutObject.writeStuffTo testIO 
testIO.string.should == "Hello, world!"

String IO 的行为就像一个打开的文件。因此,如果代码已经可以使用 File 对象,那么它也可以使用 StringIO。

关于ruby - RSpec:如何测试文件操作和文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070422/

相关文章:

testing - 如何在小 cucumber 测试中平衡细节与业务需求?

python - 多台主机上的并行 rsync

ruby - 我如何在普通的旧 ruby (非轨道)中使用轨道助手 "distance_of_time_in_words"

ruby - 在 Ubuntu 上安装 opencv - 找不到 libopencv_calib3d

c - 将 FILE* 结构映射到缓冲区?

unit-testing - 在 Controller 测试期间无法保存

ruby-on-rails - Redis 在大型 DEL 和 HMSET 函数上消耗最大内存

python - 如何仅使用其扩展名打开文件?

C:使用结构比较文件中的 2 个字符串

firebase - 如何模拟/ stub react-native-firebase?