在 ruby rspec 中使用 let 时测试和关闭文件对象
Testing and closing file objects while using let in ruby rspec
如果我有这样的class
class Foo < File
# fun stuff
end
而且我想测试它确实是从 File 继承的,我可以这样写
describe Foo
let(:a_file) { Foo.open('blah.txt') }
it "is a File" do
expect(a_file).to be_a File
end
end
我的问题是,let() 会在示例运行后负责关闭文件吗?或者我是否需要在某处明确关闭文件。
或者像这样会更好,
it "is a File" do
Foo.open('blah.txt') do |f|
expect(f).to be_a File
end
end
完全忘记了 let()?
我参考了using let and closing files,但我还是不确定。
如果您只打算在一个测试中使用 a_file
,那么您的第二个示例很好。
it "is a File" do
Foo.open('blah.txt') do |f|
expect(f).to be_a File
end
end
如果您要多次使用 a_file
,您可以这样做:
before do
@file = Foo.open('blah.txt')
end
after do
@file.close
end
it "is a File" do
expect(@file).to be_a File
end
...
如果我有这样的class
class Foo < File
# fun stuff
end
而且我想测试它确实是从 File 继承的,我可以这样写
describe Foo
let(:a_file) { Foo.open('blah.txt') }
it "is a File" do
expect(a_file).to be_a File
end
end
我的问题是,let() 会在示例运行后负责关闭文件吗?或者我是否需要在某处明确关闭文件。
或者像这样会更好,
it "is a File" do
Foo.open('blah.txt') do |f|
expect(f).to be_a File
end
end
完全忘记了 let()?
我参考了using let and closing files,但我还是不确定。
如果您只打算在一个测试中使用 a_file
,那么您的第二个示例很好。
it "is a File" do
Foo.open('blah.txt') do |f|
expect(f).to be_a File
end
end
如果您要多次使用 a_file
,您可以这样做:
before do
@file = Foo.open('blah.txt')
end
after do
@file.close
end
it "is a File" do
expect(@file).to be_a File
end
...