我一直在努力解决这个问题。我正在尝试测试一个 ruby CLI,它使用很多fileutils
操作,如创建目录和复制文件等。但是当我编写测试时,我需要一些方法来测试功能,而无需接触和更改实际的文件系统。我正在尝试使用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
根据自述文件找到 cucumber aruba 执行所有文件操作的位置。没有 ,测试运行良好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 的想法,我也想听听。谢谢