我一直在努力解决这个问题。我正在尝试测试一个使用大量fileutils
操作的ruby CLI,例如制作目录和复制文件等。但是当我编写测试时,我需要一些方法来测试功能而不需要触摸和更改实际的文件系统。我正在尝试使用fakefs
gem,但我马上就遇到了错误
When I successfully run `dotfiles init` # aruba-0.5.3/lib/aruba/cucumber.rb:71
No such file or directory - No such file or directory - /tmp/aruba-out20130817-15800-ke8nou (Errno::ENOENT)
/Users/Brian/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tempfile.rb:146:in `open'
/Users/Brian/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tempfile.rb:146:in `block in initialize'
/Users/Brian/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tmpdir.rb:142:in `create'
/Users/Brian/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/tempfile.rb:136:in `initialize'
features/dotfiles_repository.feature:8:in `When I successfully run `dotfiles init`'
所以它没有找到/tmp/aruba
,这是黄瓜aruba根据readme完成所有文件操作的地方。
测试在没有fakefs
的情况下运行正常,所以我假设它与设置有关。
这是我的features/support/env.rb
文件
require 'aruba/cucumber'
require 'fakefs/safe'
Before do
FakeFS.activate!
end
After do
FakeFS::FileSystem.clear
FakeFS.deactivate!
end
有谁知道我可能做错了什么?任何帮助表示赞赏。即使它的想法不使用fakefs,我也想听听。感谢